[iOS]IOS10 新openURL的特性
来源:互联网 发布:电脑翻墙好用的软件 编辑:程序博客网 时间:2024/05/01 21:23
作为UIApplication单例对象的方法 openURL:
在iOS开发中经常用来实现在当前应用打开外部链接的需求比如跳转到其他应用,跳转应用隐私设置界面;还有相关API canOpenURL:
进行跳转前判断.而这个古老(iOS2时出现)的 openURL
方法将被现今iOS10出现的新API openURL:options:completionHandler:
所替代.
虽然关于该API的官方文档补充完全,但所提供的信息足够能让开发者简单了解使用最新API打开外部链接的API究有何异同.
新API的官方描述
首先来看官方文档对iOS10的 What’s New in iOS UIKit部分对新API的描述
The new UIApplication method openURL:options:completionHandler:, which is executed asynchronously and calls the specified completion handler on the main queue (this method replaces openURL:).
这段话清楚地指明了新API的两个特点:异步执行open操作和主线程执行回调.
新API的代码描述
接下来再看看具体的接口代码,可以看出判断链接打开是否成功的方式也从以前的根据 openURL
调用return的布尔值变成了查询completion的success参数;
// old- (BOOL)openURL:(NSURL*)url // new- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion
并且额外地提供了一个用来URL处理的options字典参数,没有限定值时就要传空字典,就像下方代码一样调用.
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
options目前可传入参数Key在UIApplication头文件只有一个:UIApplicationOpenURLOptionUniversalLinksOnly,其对应的Value为布尔值,默认为False.如该Key对应的Value为True,那么打开所传入的Universal Link时,只允许通过这个Link所代表的iOS应用跳转的方式打开这个链接,否则就会返回success为false,也就是说只有安装了Link所对应的App的情况下才能打开这个Universal Link,而不是通过启动Safari方式打开这个Link的代表的网站.
[application openURL:URL options:@{UIApplicationOpenURLOptionUniversalLinksOnly : @YES} completionHandler:nil];
- [iOS]IOS10 新openURL的特性
- iOS-iOS10新特性引发的崩溃
- iOS 10 新特性之openURL
- iOS10适配:被弃用的openURL
- iOS10适配:被弃用的openURL
- ios10之后的一些新特性
- iOS10新特性之UIViewPropertyAnimator的使用
- iOS10新特性之UIRefreshControl的使用
- iOS10新特性之SFSpeechRecognizer的使用
- iOS9 iOS10 iOS11的新特性
- io9 iOS10 iOS11的新特性
- iOS10新特性
- [绍棠] iOS10新特性
- ios10新特性
- ios10新特性
- IOS10新特性
- iOS10新特性
- iOS10新特性
- java求两个圆相交坐标
- 核电站
- Volley加载网络图片
- SDUTACM 顺序表应用5:有序顺序表归并
- Tyvj NOIP全真模拟系列赛(3)游记
- [iOS]IOS10 新openURL的特性
- Unreal Engine Editor targeted RHI是什么
- BZOJ4537 [ HNOI2016 ] 最小公倍数 (按轶合并带权并查集+分块离线)
- Volley自定义Request
- 同一局域网windows和linux互ping不通
- IntelliJ IDEA打包WAR并部署运行(mac osx)
- Servlet生命周期
- C++易错总结(持续更新)
- revitlookup 打开出现 could not load type 对话框原因