programing

iOS 앱에서 Safari를 시작하고 URL을 여는 방법

magicmemo 2023. 4. 26. 23:11
반응형

iOS 앱에서 Safari를 시작하고 URL을 여는 방법

설정 페이지에 다음에 대한 세 개의 링크를 포함합니다.

  • 내 앱 지원 사이트
  • 유튜브 앱 튜토리얼
  • 내 기본 사이트(즉, 'Dale Dietrich가 만든' 레이블에 링크됨)

저는 이 사이트와 웹 그리고 제 문서를 검색했지만 명백한 것은 아무것도 발견하지 못했습니다.

참고: 앱 내에서 웹 페이지를 열지 않습니다.나는 단지 사파리 링크를 보내고 싶고 그 링크는 그곳에서 열려 있습니다.여러 앱이 설정 페이지에서 동일한 작업을 수행하는 것을 보았으므로 가능할 것입니다.

제가 한 일은 다음과 같습니다.

  1. 헤더 .h 파일에 다음과 같이 IBAction을 생성했습니다.

     - (IBAction)openDaleDietrichDotCom:(id)sender;
    
  2. 링크할 텍스트가 포함된 설정 페이지의 UI 버튼을 추가했습니다.

  3. 나는 파일 소유자의 IBAction에 버튼을 적절히 연결했습니다.

  4. 그런 다음 다음을 구현합니다.

목표-C

- (IBAction)openDaleDietrichDotCom:(id)sender {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}

스위프트

(헤더 파일이 아닌 viewController의 IBAaction)

if let link = URL(string: "https://yoursite.com") {
  UIApplication.shared.open(link)
}

다음과 같은 문자열 및/또는 주소를 이스케이프할 필요가 없습니다.

let myNormalString = "https://example.com";
let myEscapedString = myNormalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!

사실, 탈출은 열림을 실패하게 할 수 있습니다.

빠른 구문:

UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)

iOS 9.3 및 이전 버전을 위한 새로운 Swift 구문

Swift의 일부 새로운 버전(아마도 swift 2?)부터 UIA 응용 프로그램입니다.공유 응용 프로그램()이 이제 UIA 응용 프로그램입니다.공유(계산된 속성을 더 잘 활용하는 것으로 추측됩니다.또한 URL은 더 이상 암묵적으로 NSURL로 변환할 수 없으므로 as!로 명시적으로 변환해야 합니다.

UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)

iOS 10.0의 새로운 Swift 구문

오픈iOS 10.0부터는 URL 메서드가 더 이상 사용되지 않으며 옵션 개체와 비동기 완료 핸들러를 사용하는 보다 다용도의 메서드로 대체되었습니다.

UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)

여기서 열려는 URL이 장치 또는 시뮬레이터로 열릴 수 있는지 여부를 한 번 확인해야 합니다.왜냐하면 때때로 (시뮬레이터에서 주로) 충돌을 일으키는 것을 발견했기 때문입니다.

목표-C

NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
}

스위프트 2.0

let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
     UIApplication.sharedApplication().openURL(url)
}

스위프트 4.2

guard let url = URL(string: "some url") else {
    return
}
if UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

UIA 응용 프로그램의 방법을 살펴봅니다.NSURL 인스턴스를 시스템에 전달할 수 있어야 합니다. 시스템은 NSURL 인스턴스를 열고 해당 애플리케이션을 시작할 앱을 결정합니다.(아마도 확인하고 싶을 것입니다.-canOpenURL:첫 번째, 현재 시스템에 설치된 앱에서 URL을 처리할 수 없는 경우 - 일반적으로 문제가 되지 않을 가능성이 높습니다.http://링크).

에는 URL을 입력합니다.text계획 있음:

NSString* text = @"www.apple.com";
NSURL*    url  = [[NSURL alloc] initWithString:text];

if (url.scheme.length == 0)
{
    text = [@"http://" stringByAppendingString:text];
    url  = [[NSURL alloc] initWithString:text];
}

[[UIApplication sharedApplication] openURL:url];

사용되지 않는 Objective-C 버전은 다음과 같습니다.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];

완료 버튼이 있는 Swift 3 솔루션

잊지 마세요import SafariServices

if let url = URL(string: "http://www.yoururl.com/") {
            let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
            present(vc, animated: true)
        }

스위프트 3.0

if let url = URL(string: "https://www.reddit.com") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:])
    } else {
        UIApplication.shared.openURL(url)
    }
}

이전 버전의 iOS를 실행하는 장치도 지원합니다.

이 답변은 iOS 10.0부터 사용되지 않으므로 더 나은 답변은 다음과 같습니다.

if #available(iOS 10.0, *) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
    UIApplication.shared.openURL(url)
}

yen 목표-c

[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
        if (success) {
            NSLog(@"Opened url");
        }
    }];

스위프트 5:

func open(scheme: String) {
   if let url = URL(string: scheme) {
      if #available(iOS 10, *) {
         UIApplication.shared.open(url, options: [:],
           completionHandler: {
               (success) in
                  print("Open \(scheme): \(success)")
           })
     } else {
         let success = UIApplication.shared.openURL(url)
         print("Open \(scheme): \(success)")
     }
   }
 }

용도:

open(scheme: "http://www.bing.com")

참조:

iOS10에서 URL 열기

openURL(:)iOS 10.0에서는 더 이상 사용되지 않습니다. 대신 UIA 응용 프로그램에서 다음 인스턴스 방법을 사용해야 합니다. open(:옵션:completionHandler:)

사용 예: Swift 사
그러면 Safari에서 "https://apple.com "이 열립니다.

if let url = URL(string: "https://apple.com") {
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

https://developer.apple.com/reference/uikit/uiapplication/1648685-open

SWIFT 3.0에서

               if let url = URL(string: "https://www.google.com") {
                 UIApplication.shared.open(url, options: [:])
               }

사용해 보십시오.

NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}

Swift 1.2에서 다음을 시도합니다.

let pth = "http://www.google.com"
    if let url = NSURL(string: pth){
        UIApplication.sharedApplication().openURL(url)

Swift 4 솔루션:

UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)

언급URL : https://stackoverflow.com/questions/12416469/how-to-launch-safari-and-open-url-from-ios-app

반응형