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

最新文章

  1. 5-udev多路径
  2. Android笔记——Android内部类
  3. Scrum 是什么?
  4. jquery操作radio单选按钮、checked复选框。
  5. 取消table中tr td的边距
  6. js ajax乱码查看\u8fdb\u53e3
  7. HashMap早知道
  8. 【HDU 3652】 B-number (数位DP)
  9. matplotlib curve.py
  10. JavaScript 客户端JavaScript之Document对象中的表单和表单元素
  11. 使用rem设计移动端自适应页面三(转载)
  12. 诡异的数学,数字问题 - leetcode
  13. 关于SQL的一些小知识
  14. 201521123017 《Java程序设计》第2周学习总结
  15. 关于scanf 与 cin gets(),getline()......输入输出字符串的区别
  16. OO第一次阶段性总结
  17. .net core EFCore CodeFirst 迁移出现错误【No project was found. Change the current working directory or use the --project option. 】
  18. python爬取网页的通用代码框架
  19. S.M.A.R.T.记录几块ssd硬盘
  20. leetcode 题解 || Valid Parentheses 问题

热门文章

  1. C++学习笔记13_操作MySql
  2. Netty学习篇④-心跳机制及断线重连
  3. JavaSE语法
  4. LNMP+Redis
  5. VirtualBox6安装CentOS7设置静态IP
  6. svg路径蒙版动画
  7. 模拟示例raid 5(5块磁盘 3块做raid 2块做备份 ) raid 10(5块磁盘) 修改版
  8. python面试看这一篇就够了
  9. 深入理解计算机系统 第三章 程序的机器级表示 part1
  10. .NET单例模式快速学习应用