openURL 在iOS10上已被弃用。

苹果在iOS 2 推出openURL:方法用于打开外部链接,而与之相关的方法 canOpenURL: 在iOS 9隐私控制里也禁止查询设备中已安装的App。

苹果在iOS 10 中已经弃用了openURL:这个旧方法,用openURL:options:completionHandler:来代替。

iOS 10中的新方法:

// Objective-C

- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion

// Swift

open func open(_ url: URL, options: [String : Any] = [:], completionHandler completion: (@escaping (Bool) -> Swift.Void)? = nil)

它有三个参数:

要打开的URL。

一个可选字典(可参考下面的实例)。传一个空字典时,该方法的效果与 openURL:一致。

一个带有 成功与否 参数的 completion handler(可认为是闭包或block)。如果你对这个状态不感兴趣可以传Null。

代码实例:

显示 Objective-C代码:

- (void)openScheme:(NSString *)scheme {
  UIApplication *application = [UIApplication sharedApplication];
  NSURL *URL = [NSURL URLWithString:scheme];

  if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [application openURL:URL options:@{}
       completionHandler:^(BOOL success) {
      NSLog(@"Open %@: %d",scheme,success);
    }];
  } else {
    BOOL success = [application openURL:URL];
    NSLog(@"Open %@: %d",scheme,success);
  }
}

// Typical usage
[self openScheme:@"tweetbot://timeline"];

Swift 版代码:

func open(scheme: String) {

ifleturl = URL(string: scheme) {

if#available(iOS 10, *) {

UIApplication.shared.open(url, options: [:], completionHandler: {

(success) in

print("Open \(scheme): \(success)") }

) } else{

letsuccess = UIApplication.shared.openURL(url)

print("Open \(scheme): \(success)")

}

}

}

// Typical usage

open(scheme: "tweetbot://timeline")

 

参考文章:

链接:https://juejin.im/post/5d26e80bf265da1bca520552

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wumu_Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值