在设置页面,我想包括三个链接到

我的应用支持网站 YouTube应用教程 我的主要网站(例如:链接到“由Dale Dietrich创建”标签。)

我搜索了这个网站和网页还有我的文档我没有发现任何明显的东西。

注意:我不想在我的应用程序中打开网页。我只想将链接发送到Safari,该链接在那里打开。我已经看到许多应用程序在他们的设置页面做同样的事情,所以这必须是可能的。


看看UIApplication上的-openURL:方法。它应该允许你向系统传递一个NSURL实例,系统将决定在哪个应用程序中打开它并启动该应用程序。(请记住,你可能想要检查- canopenurl:首先,以防URL不能被当前安装在系统上的应用程序处理-尽管这对于普通的http://链接可能不是问题。)


以下是我所做的:

我在头文件.h中创建了一个IBAction,如下所示: ——(IBAction) openDaleDietrichDotCom: (id)发送者; 我在设置页面上添加了一个UIButton,其中包含我想要链接的文本。 我将按钮连接到文件所有者中的IBAction。 然后执行以下操作:

objective - c

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

斯威夫特

(IBAction在viewController中,而不是头文件中)

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

注意,我们不需要转义字符串和/或地址,比如: 让myNormalString = "https://example.com"; 让myEscapedString = myNormalString。addingPercentEncoding (withAllowedCharacters: .urlHostAllowed) ! 事实上,逃避可能会导致开放失败。


斯威夫特的语法:

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

iOS 9.3及更早版本的新Swift语法

在Swift的某些新版本(可能是Swift 2?)中,UIApplication. sharedapplication()现在是UIApplication。共享(我猜是为了更好地利用计算属性)。另外URL不再隐式转换为NSURL,必须显式转换为as!

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

iOS 10.0新增Swift语法

从iOS 10.0开始,openURL方法已经被弃用,取而代之的是一个更通用的方法,它接受一个选项对象和一个异步完成处理程序

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

并且,如果你不确定提供的URL文本是否有一个方案:

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];

这里需要检查将要打开的url是否能够通过设备或模拟器打开。因为有些时候(大多数在模拟器),我发现它会导致崩溃。

objective - 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)
}

SWIFT 3.0

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

openURL(:)在iOS 10.0中已弃用,相反,你应该在UIApplication上使用以下实例方法:

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


试试这个:

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

未弃用的Objective-C版本如下:

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

在Swift 1.2中,试试这个:

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

斯威夫特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的设备


斯威夫特3 带有Done按钮的解决方案

不要忘记导入SafariServices

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

Swift 4解决方案:

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

因为这个答案从iOS 10.0开始就被弃用了,所以更好的答案是:

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

y en Objective-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中的OpenURL