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