iOSUniversalLinks教程
最近有个需求, 是通过链接跳转到应⽤内部,现在iOS主流的⽅案有两个
schema
Universal Links
现在分析下两个⽅案
⼀、两种⽅式的简介
schema
schema是iOS9之前⽐较主流的⼀种跳转⽅案了,更多的是⽤在了两个APP相互跳转中。也可以在Safari中输⼊schema://跳转到App内部
通过schema⽅式跳转App
其实这种⽅式很不顺滑,在每次跳转的时候都会弹框询问。如果iPhone中如果没有安装则会直接弹出错误提⽰
通过schema不到对应的应⽤
正常产品的思路是如果⼿机中没有安装APP的话,应跳转到App Store下载页⾯。我与前端⼩伙伴沟通后,因为schema跳转失败是没有错误码返回的。前端使⽤计时器计时,如果在规定时间内没有跳转到APP,则认为是失败的。这种设计确实有⼀些体验不好。
⽽且在中输⼊schema链接,也⽆法跳转到APP。因为schema并没有⾛http/https链接,也⽆法识别。
聊天中输⼊schema是⽆法跳转的
使⽤Safari打开知乎⾸页,可直接跳转到知乎项⽬中,并没有弹框询问,我想是时候拥抱新技术了。
Universal Links
1.简介
建议⼤家先看看苹果官⽅⽂档
Universal Links(通⽤链接)是iOS9.0出的新技术。如果我们的应⽤⽀持通⽤链接,那么就可以通过https链接来打开APP(⼿机中已经安装此APP),或者跳转到https链接(⼿机中没有安装此APP)。
简单说⼀下通⽤链接的特性
唯⼀性:不像⾃定义的schema链接,通⽤链接不会被其它的APP所使⽤。因为它使⽤标准的https链接到你⾃⼰的域名。【因为你的域
名不会被其他⼈所使⽤】
安全性:当⽤户下载APP的时候,iOS会检查你上传到web服务器的⽂件以确保您的⽹站允许您的应⽤程序以其名义打开⽹址。因为只有
本⼈有权利创建且上传该⽂件到服务器,所以⽹站和APP的关联是安全的。
灵活性:甚⾄在iOS设备没有安装你项⽬的时候通⽤链接也会正常⼯作。当设备没有安装APP的时候,点击通⽤链接会在Safari展⽰你⽹
站的内容。
灵活性:⼀个通⽤链接可以同时作⽤于项⽬和⽹站中。
灵活性:其它APP可以在不知道你的APP是否安装的情况下与你的APP通信
2.使⽤条件
1.有⼀个注册的域名。
2.⽀持https请求,并且CA证书是有效的,这个需要与后端同事进⾏确认。
3.可上传⼀个json⽂件到web服务器
4.APP版本⾄少为iOS9及以上
5.Xcode版本为7以上
⼆、通⽤链接使⽤说明
⾸先我们先设置⼏个全局来⽅便⼤家理解
static NSString *webLink = @"test" //域名
xcode怎么打开
static NSString *bundleID = @"st.bundle" //bundleID
static NSString *teamID = @"TEAMIDSHSAUX" //team ID [可登录Apple Developer查看]
1.Xcode配置
(1)⾸先是将Associated Domains打开,并填写我们的域名,前缀是applinks。etc.如果你的域名是test,则填上applinks:test。APP会在第⼀次启动的时候通过填写的域名来下载apple-app-site-association⽂件,该⽂件会在下⾯说明。
打开Associated Domains
(2)配置后会发现项⽬中多了⼀个itlements⽂件
同时开发者中⼼的Associated Domains也会变成启⽤状态
开发者中⼼
2.创建apple-app-site-association⽂件
⾸先创建⼀个apple-app-site-association⽂件(注意是没有后缀的),其内容是json格式,官⽅⽰例如下
{
"applinks": {
"apps": [],
"details": [
{
"appID": "st.bundle",
"paths": [ "*" ]
}
]
}
}
相关参数说明
appID:由TeamID.BundleID组成。TeamID可在开发者中⼼查看,BundleID可在Xcode中查看。
paths:设定⼀个App的路径⽀持列表,只有这些指定的路径链接才会被App所处理。(paths是⼤⼩写敏感,*是通配符表⽰任意路
径,⼀般填写这个就可以)
3.上传apple-app-site-association⽂件
将上⾯⽣成好的apple-app-site-association上传到web server
这⾥⼀定要跟你的后端&前端⼩伙伴沟通, ⾃⼰是做不出来的哦
apple-app-site-association⽂件保存的位置
根⽬录下。etc.test/apple-app-site-association
.well-known⽂件夹下(推荐,苹果在iOS9.3更改了通⽤链接的请求⽂件的位置,但是仍然⽀持上⾯的路径)。在根⽬录新建.well-known ⽂件夹(不要忘记前⾯的.)。etc.test/.well-known/apple-app-
site-association
4.检查
(1)使⽤浏览器打开我们上传的⽂件路径,应该可以直接看到刚刚上传的json⽂件,或者是会⾃动下载到电脑。
打开链接的效果
(2)苹果也提供了⼀个官⽅⽹页供我们开发者来验证test/apple-app-site-association是否有效。验证地址:
成功的情况应该如下图
虽然有⼀个error,但是不影响使⽤
三、检验成果
重新编译App后,就可以检验成果了。
(1).在备忘录输⼊你的域名,点击可直接跳转到App,长按会显⽰(在“AppName”中打开)。
备忘录
(2).在safari中直接打开你的域名,⽹页下来会看见上⽅的提⽰条。
Safari中打开
(3).在中打开域名,可以直接跳转到官⽹,但是在内置的浏览器上⽅不会显⽰提⽰条。但是选择在Safari中打开是可以显⽰提⽰条的。
四、在App中进⾏处理
⽤户通过链接进⼊我们的App中,在AppDelegate是可以获取该链接的
我在项⽬中使⽤的是蘑菇街的路由层.
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler {
NSLog(@"%@", userActivity.webpageURL);
[MGJRouter openURL:[userActivity.webpageURL absoluteString]];
return YES;
}
作者:Pusswzy
链接:www.jianshu/p/f1a1e1833eec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,⾮商业转载请注明出处。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。