以下链接可查阅更加了解UniversalLink
什么是Universal Link(通用链接)
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(通用链接)
Universal Link(通用链接):看起来就是一条普通的https链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。对用户来说则是一个无缝跳转的过程。
使用Universal Link(通用链接)跳转的好处
唯一性: 不像自定义的URL Scheme,因为它使用标准的HTTPS协议链接到你的web站点,所以一般不会被其它的APP所声明。另外,URL scheme因为是自定义的协议,所以在没有安装 app 的情况下是无法直接打开的(在Safari中还会出现一个不可打开的弹窗),而Universal Link(通用链接)本身是一个HTTPS链接,所以有更好的兼容性;
安全:当用户的手机上安装了你的APP,那么系统会去你配置的网站上去下载你上传上去的说明文件(这个说明文件声明了当前该HTTPS链接可以打开那些APP)。因为只有你自己才能上传文件到你网站的根目录,所以你的网站和你的APP之间的关联是安全的;
可变:当用户手机上没有安装你的APP的时候,Universal Link(通用链接)也能够工作。如果你愿意,在没有安装你的app的时候,用户点击链接,会在safari中展示你网站的内容;
简单:一个HTTPS的链接,可以同时作用于网站和APP;
私有: 其它APP可以在不需要知道你的APP是否安装了的情况下和你的APP相互通信。
如何开启UniversalLink
1.在微信开发者平台设置Universal Link 注意要以https开头 /结尾
2.在苹果开发者账户里面开启Associated Domains 及在xcode中配置
开发者账户中开启Associated Domains
Xcode中配置
配置如 applinks:www.baidu.com (applinks:+你准备的UniversalLink)
3.需要编写一个名字为apple-app-site-association的json文件 (上传服务器时请去掉.json的后缀)
内容格式如: (注意teamID和bundleID 需要到苹果开发者账户里面查看 下面会有截图)
{"applinks":{"apps":[],"details":[{"appID":"teamID.bundleId","paths":["/deaplink","/wwdc/news/","*"]},{"appID":"ABCD1234.com.apple.wwdc","paths":["*"]}]}}
paths配置,实际上就是限制哪些路径可以唤醒app,哪些路径不能唤醒app。格式如下:
"paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]
使用*配置,则整个网站都可以使用
使用特定的URL,例如/wwdc/news/来指定某一个特殊的链接
在特定URL后面添加*,例如 /videos/wwdc/2015/*, 来指定网站的某一部分
除了使用*来匹配任意字符,你也可以使用 ?来匹配单个字符,你可以在路径当中结合这两个字符使用,例如 /foo/*/bar/201?/mypage
需要注意的是:
配置的paths路径,是区分大小写的
以下获取teamID和bundleID
比如teamID是xxxxxxxxxxx,bundleId是com.mytest.app 那么appID就是: xxxxxxxxxxx.com.mytest.app
配置完打开链接会出现
4.此时Xcode还需要配置
在Xcode中,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI
5.处理通用链接
当APP被UniversalLink调起后,可以在delegate中使用如下方法进行对应处理
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
NSLog(@"userActivity : %@",userActivity.webpageURL.description);
return YES;
}