iOS App间相互跳转

        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 AApp 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:[email protected]

拨打电话: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,不需要在浏览器中打开再去点击其他按钮。

你可能感兴趣的:(iOS App间相互跳转)