Universal Link
(通用链接)是什么?
这是Apple在iOS9推出的一种能通过HTTPS链接直接启动手机APP(手机有安装APP的情况)的链接。当你的应用支持Universal Link
(通用链接),在用户点击一个链接时可以跳转到你的网站并获得无缝重定向到对应的APP,且不需要通过Safari
浏览器。如果你的应用不支持的话,则会在Safari
中打开该链接。在苹果开发者中可以看到对它的介绍是:
Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.
说起Universal Link
,我们不由就会想起URL Scheme
,以为在UniversalLink
出来之前iOS这边使用的一直都是URL Scheme
进行APP之间的跳转,当然在Safari
中也可以通过scheme://跳转APP。但是每次跳转之前都会弹出系统级提示,询问是否打开,如果设备中没有安装此App则会直接弹出错误提示,体验不友好。
Universal Link
(通用链接):看起来就是一条普通的https
链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari
浏览器中,展示H5页面。对用户来说则是一个无缝跳转的过程。
使用Universal Link
(通用链接)可以让用户在Safari
浏览器或者其他APP的webview
中拉起相应的APP,也可以在APP中使用相应的功能,从而来把用户引流到APP中。比如淘宝当在Safari
浏览器中进入淘宝网页点击打开APP则会使用Universal Link
(通用链接)来拉起淘宝APP。
相比于URL Scheme,Universal Link的优点有:
创建一个名字叫做apple-app-site-association,包含固定格式的json文件内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
注意:文件名必须为apple-app-site-association,不能带json后缀。
appID为teamID.BundleID,path是设置哪些路径可以唤起APP。
在项目的Capablities中开启Associated domains,一定要按照applinks:域名的格式填写。
将apple-app-site-association文件上传到服务器这个需要后端开发配合完成,将这个文件放到服务器的根目录下或者放到.well-known目录下。
如果已经配置过Universal Links,那么在用户第一次安装app时,苹果会发送一个请求,请求你服务器上的apple-app-site-association文件。
请求apple-app-site-association文件成功之后,用户就可以使用Universal Links唤醒app了。测试的咱们最好把应用删了重新装,确保苹果会发请求。
验证方式:
直接将 https: //http://app.mytest.com/SystemCalendar 复制到Safari打开,记得下拉一下看看会不会出现APP的跳转栏,像下面这样就是成功了。
通过universal link打开APP之后,执行了下面方法,可以在下列方法中根据path去做不同的操作,比如打开某个特定页面,做某个特定操作这些都是可以的。
func application(_application:UIApplication, continue userActivity:NSUserActivity, restorationHandler:@escaping([UIUserActivityRestoring]?) ->Void) ->Bool{
return true
}