iOS系统由于其 Sandbox的安全机制,系统内各App之间不能共享信息;官方给出了一些(URL Scheme/App Groups/Universal Link等)方案以解决应用间通信;本篇总结了URL Schemes在App间跳转的用法;
由于系统App,系统已经做了一定的处理及Safrai浏览器的特殊性;这里将分三种情况介绍App间跳转;
1、原生App间的跳转;
2、原生App与系统App间的跳转;
3、原生App和网页间的跳转;
其中跳转的目的地又可细分为以下两种情况:
1、只启动App;
2、启动App并跳转到APP的指定页面;
一、原生App间的相互跳转,也可以称为白名单App间的跳转;
最常见用法是第三方分享、登录、支付等;假设有App A和App B两个应用;实现App A启动App B的步骤如下:
1、将App B注册到手机系统中;应用B Targets —> Info —> URL Type 自定义一个URL Schemes 如:beatfetal
2、App A将App B列入白名单;App A Targets —> Info —>Custom iOS Target Properties 添加LSApplicationQueriesSchemes 数组中添加B;
3、App A启动App B;
4、App A启动App B并跳转到指定页面;App A中URL 中添加指定页面的路径;
5、App B中对接收到的URL进行处理;App 处于后台和未启动要分别处理;
App未启动时,在didFinishLaunchingWithOptions中接收URL,并做处理;
App在后台时,AppDelegate中会调用openURL 方法;
运行录屏
二、原生APP与系统APP间的跳转;
系统App已有对应的URL,所以不需要再行绑定URL,也不需要在原生App中设置白名单;所以原生App跳转到系统App只需要知道系统App的URL Strings即可通过openURL方法调用;常用的系统APP 发送短信、拨打电话、发送邮件;
发短信给10086:sms://10085
邮箱:mailto:frank@wwdcdemo.example.com
拨打电话:tel:10086
设置首页:app-settings:
跳转到设置详细页面可参考:https://www.jianshu.com/p/5fd0ac245e85
三、原生APP和网页间的跳转,也可以称为原生APP和浏览器之间的跳转;
1、原生APP启动Safrai打开网页;
2、浏览器启动原生APP;HTML5中嵌入URL Schemes;
适用于所有iOS版本,但网页会弹出“是否打开***”的弹窗;iOS9之后,Universal Link跳转方式实现了无缝跳转;当浏览器(Safrai)识别到预先指定好的URL,就可以直接唤醒App,不需要在浏览器中打开再去点击其他按钮。