Universal Links(通用连接)
如果你的app支持通用链接,那么iOS 9用户点击链接到你的网站,可以准确地定位到到手机安装的你的APP应用程序,而不通过Safari去实现。如果用户手机没有安装你的APP应用程序,通过通用连接能利用一个链接到你的网站,而不用通过在Safari打开你的网站。
通用链接给你如下几个关键的好处
1. Unique.唯一性
不像自定义URL schemes协议头那样,通用的链接不能被其他应用程序声称,因为他们使用标准HTTP或HTTPS链接你的网站。
2. 安全
如果iOS用户安装了你的应用,应用程序启动(不是登陆)时就会检查你上传到web服务器json文件(apple-app-site-association),以确保你的网站允许应用程序打开url。只有你能创建和上传这个文件,所以专门配置的网站与你的应用程序连接之间是安全的。
3. 方便,自由性
触发通用连接时,如果用户没有安装你的应用程序,点击这个通用连接会打开Safari加载你的网站内容,这是用户所期望。
4. 简单
只需一个URL就能根据用户有没有安装你的APP,决定加载你的网站还是你的APP应用程序。
5. 私有性
其他应用程序可以与你的应用程序通信,而不需要知道你的应用程序是否在用户手机中安装。
添加支持通用链接的步骤
1.创建和上传apple-app-site-association文件
文件内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleId",
"paths": ["/mall/app_download/app","/app_download/app"]
},
{
"appID": "teamID.bundleId",
"paths": ["/path/app_download/app","/app_download/app","*"]
}
]
}
}
复制代码
注意事项如下:
- details里面的内容可以为数组,也就是可以配置多个应用的Universal Links
- apple-app-site-association`文件名千万不能写错啊,没有后缀
- appID 的 格式为
teamID
.bundleId
形式 - paths配置,实际上就是限制哪些路径可以唤醒app,哪些路径不能唤醒app。一下为path规则:
- 使用
*
配置,则整个网站都可以使用 - 使用特定的URL,例如
/wwdc/news/
来指定某一个特殊的链接 - 除了使用
*
来匹配任意字符,你也可以使用?
来匹配单个字符,你可以在路径当中结合这两个字符使用,例如/foo/*/bar/201?/mypage
- 配置的paths路径,是区分大小写的
- 使用
2.将这个文件上传到你的服务器,可以将这个文件放到服务器的根目录下,也可以放到.well-known
这个子目录下。
注意事项如下:
-
确保使用
https://yourdomain.com/apple-app-site-association
这个链接可以访问到,yourdomain.com
为你的服务器域名。 -
也可以使用苹果的验证网站,验证文件是否能被苹果请求到。如果是未上线的应用,使用验证网站时可能出现如下提示:
-
出现该提示为
apple-app-site-association
文件配置正确。 -
出现
404
错误码提示,则为apple-app-site-association
文件未上传成功,或者使用https://yourdomain.com/apple-app-site-association
路径无法访问。
3.配置app,然后在app里面添加代理方法
- app IDs 配置
-
项目配置
在项目的
Capablities
中开启Associated domains
,如下图:
注意事项:
domains
可以添加多个,前缀必须为applinks:
,applinks:
后为你的服务器的域名。- 服务器必须要支持https。
-
代码接收Universal Links唤醒
在appdelegate中实现下面这个方法,当使用Universal Links唤醒app时就执行这个方法。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSURL *webUrl = userActivity.webpageURL; if ([webUrl.absoluteString containsString:@"?"]) { } } return YES; } 复制代码
-
验证以上配置
快捷验证,在备忘录中输入
https://yourdomain.com/apple-app-site-association
,长按这个链接,出现下图提示则配置成功。