一、什么是Universal Link
Universal Link
(通用链接)是什么,相信iOS开发的同学一定对这个东西非常熟悉。这是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.
二、什么是URL Scheme
说起Universal Link
,我们不由就会想起URL Scheme
,在Universal Link
出来之前iOS这边使用的一直都是URL Scheme
进行APP之间的跳转,当然在Safari
中也可以通过scheme://
跳转APP。但是每次跳转之前都会弹出系统级提示,询问是否打开,如果设备中没有安装此App则会直接弹出错误提示,体验不友好。熟悉iOS开发的同学也肯定对这个东西不陌生。
三、Universal Link的优点
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
的优点有:
- 灵活性:即使未安装APP,
Universal Link
也可以正常使用,网页可以显示跳转AppStore下载的引导,进一步地提升用户体验。 - 安全性:开发者在自己的网站域名配置了
apple-app-site-association
,才能通过对应的域名调起APP。另外域名必须支持HTTPS
。 - 隐私性:在iOS9之前,基于
URL Scheme
,大家可以判断手机是否安装某APP。并且可以随便根据URL Scheme
打开其他APP,像以前之前可以打开微信的扫一扫等各种功能。使用Universal Link
就不会被其他恶意开发者随便跳转打开你的APP具体页面。 - 通用性:一个URL对你的网站和App都通用,
Universal Links
是标准的URL格式,而自定义URL Scheme
可能理解为特殊URL
方案,默认只有你的App能解析,浏览器无法解析。
四、如何配置Universal Link
1.创建配置文件
创建一个名字叫做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。
2.Xcode工程配置
在项目的Capablities
中开启Associated domains
,一定要按照applinks:域名的格式填写。
3.服务器配置
将apple-app-site-association
文件上传到服务器这个需要后端开发配合完成,将这个文件放到服务器的根目录下或者放到.well-known
目录下。
4.验证Universal Links配置是否成功
如果已经配置过Universal Links
,那么在用户第一次安装app时,苹果会发送一个请求,请求你服务器上的apple-app-site-association
文件。
请求apple-app-site-association
文件成功之后,用户就可以使用Universal Links
唤醒app了。测试的咱们最好把应用删了重新装,确保苹果会发请求。
验证方式:
直接将https: //http://app.mytest.com/SystemCalendar
复制到Safari打开,记得下拉一下看看会不会出现APP的跳转栏,像下面这样就是成功了。
5.通过Universal Links跳到APP内,获取URL
通过universal link
打开APP之后,执行了下面方法,可以在下列方法中根据path
去做不同的操作,比如打开某个特定页面,做某个特定操作这些都是可以的。
func application(_application:UIApplication, continue userActivity:NSUserActivity, restorationHandler:@escaping([UIUserActivityRestoring]?) ->Void) ->Bool{
return true
}