一、应用间跳转介绍
1.1、什么是应用间跳转,有什么作用? 如下
<1>、使用第三方用户登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名"
<2>、应用程序推广,设置-推荐应用-有很多应用程序图标如果本机已经安装过,会直接跳转到另外一个应用程序, 软件的广告,我们在抖音或者进入头条都可以看到很多的点击事件进去其他的app或者去下载appstore下载app
<3>、平时 支付宝,微信支付 等等
1.2、如何实现应用程序间跳转 ?
<1>、跳转appstore进入自己的app: 在我们自己的app里面有时候我们会有更新提醒,其实也就是打开我们自己 app 的 url,以 itms-apps://或https://开头的应用详情页链接,跳转到AppStore,如下,其中url要进行转码,下面我就不再转码了
OC 版本:
Swift 版本:
<2>、打电话:tel://电话号码,代码和上面的一样
<3>、发短信:sms://电话号码,代码和上面的一样
<4>、发邮件:mailTo://邮箱号,代码和上面的一样
1.3、URL : 统一资源定位符
<1>、我们以淘宝网的一个链接为例:https://www.taobao.com/markets/bao/xiangbao?spm=a21bo.2017.201867-main.5.5af911d9blzLlJ
Swift版本
打印结果:协议= https IP或者是域名= www.taobao.com 路径= /markets/bao/xiangbao 参数= spm=a21bo.2017.201867-main.5.5af911d9blzLlJ
OC版本
打印结果和上面的一样
<2>、一个 url 分为以下部分
二、应用间跳转实现
2.1、我们先以自己创建的app实现来回的跳转:Test1 与 Test2 两个项目
2.2、给Test2项目设置一个 URL Scheme,用来其他的app跳转到 Test2
给Test2项目设置一个 `URL Scheme`,用来其他的app跳转到 `Test2`
2.3、在Test1项目里面设置白名单
<1>、解释一下什么是白名单:其实白名单是在 iOS9.0 以后提出的,它就是一个数组,里面放的是其他app的URL Scheme名字,在iOS9以前是不需要设置的,可以直接用canOpenURL判断是否可以跳转,但是在iOS9.0之后如果不添加白名单, openURL 是无法判断判断是否可以跳转的。
<2>、设置白名单,如果你要跳转其他的app,就要在自己的app的 info.plist 设置白名单,添加其他app的URL Scheme,白名单的字段是:LSApplicationQueriesSchemes,下面我们在 Test1添加白名单
白名单的设置
2.4、在Test1项目跳转到Test2项目测试,代码如下
我们把上面 1.2中的<1>里面的url换为下面,在同一个手机上运行 Test1 和 Test2 两个项目
跳转效果
OC 版本:后面的代码都是 1.2中的<1>里面的代码
Swift 版本:后面的代码都是 1.2中的<1>里面的代码
2.5、如果你想在Test2app再返回到Test1app,其实也就是反过来,在 Test2 的白名单里面添加Test1的URL Scheme,在跳转Test1的使用根据Test1的schmem用openURL返回,记得先用 canOpenURL判断一下
2.6、常用白名单字段(更多的白名单字段在mob平台iOS开发文档查看)
新浪
微信
支付宝
三、怎样跳转到不同界面?
3.1、再建立一个项目 Test3 ,给它添加一个 URL Scheme,再给Test3添加两个控制器 ViewController2与ViewController3
再建立一个项目Test3,给它添加一个Url Scheme
3.2、在Test3处理其他Test1(或者其他的app通过openURL)进来的判断
OC 版本
Swift 版本
3.3、在Test1里面的跳转代码
OC 版本
Swift 版本
四、总结
4.1、实现两个app之间跳转的步骤
<1>、在各自的app里面设置 URL scheme
<2>、在各自app的info.plist里面添加字段LSApplicationQueriesSchemes,类型为数组,数组中添加对方的 scheme 字符串(白名单的作用仅仅是iOS9.0方法canOpenURL要求的,因为我们在跳转前需要检查下设备有没有安装将要跳转的应用)
<3>、通过openURL 跳转对方的 URL Scheme 即可
4.2、在最后我重复一下很多app跳转到微信、支付宝、微博等等后,它们是怎么做到再回到我们的app的,首先我们知道这些app里面的白名单肯定是没有我们的 URL Scheme
答:首选我们在其他平台注册自己的应用的时候,都会给我们一个 URL Scheme 字符串,这个字符串我们需要添加到我们的 URL Scheme里面,想必大家也知道了,我们需要添加多个URL Scheme,因为微博,微信,支付宝都会给我们一个唯一的 URL Scheme 字符串,唯一是为了防止我们跳转到他们的app后再返回的时候出错,还有其他设备的 URL Scheme与我们的一样就会造成返回错乱的情况;再说支付宝微信在返回我们的app的时候他们不去白名单里面添加我们的 URL Scheme,那是因为他们知道我们的设备肯定有我们的app,不然怎么会进入到微信和支付宝的?又有人说了我先进到微信,在弹出返回自己app和留在微信的界面弹出,我进入后台去把自己的app卸载,再去微信点击返回自己的app,其实我也是这么测试的,但是只要离开微信,返回自己app和留在微信的按钮就会消失,所以微信返回其他的app是不需要在白名单添加其他app的 URL Scheme。
到此结束这篇文章,希望你能够通过这篇博客彻底知道 URL Scheme作用和白名单是什么以及如何跳转在app之间跳转。有不理解的地方写下你的评论,看到后我会第一时间回答。