什么是Universal Links
通用链接(Universal Link)是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作。如果没有安装对应的app,那么点击链接会使用Safari打开网页。在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式。
为何要使用Universal Links
原本App的微信分享仅使用了原生分享组件UIActivityViewController,上手体验并不好(明文显示分享链接、无内容来源展示、布局不美观...),于是有了接入微信sdk分享的需求。在查看微信官网文档(iOS接入指南)时第一次接触到Universal Links这个名词,于是有了这篇文章。
开始配置
Support Universal Links 先附上苹果官方文档
使用要求
1.有一个自己的域名,该域名支持https请求且CA证书有效
2.上传一个json文件到服务器
使用步骤
1.在Xcode中打开Associated Domains
提示:可在第二步上方的➕中找到Associated Domains选项
2.设置apple-app-site-association文件
⑴ 创建一个文件(无后缀),其内容为json数据,格式如下:
{"applinks":{"apps":[],"details":[{"appID":"TEAMIDSHSAUX.com.test.bundle","paths":["*"]}]}}
其中appID是由TeamID.BundleID组成。TeamID可在开发者中心查看,BundleID可在Xcode中查看。paths是App的路径支持列表,一般填写*即可。
⑵ 创建好该文件后将其上传到服务器上,放在/var/html/.well-known路径下(.well-known可能是隐藏的)。
⑶ 在浏览器中访问https://你的域名/.well-known/apple-app-site-association,如果正确显示其内容或者下载文件并确认其中内容无误,那么大喊伞兵一号服务器准备就绪。
⑷ 其实苹果官方提供了一个检测开发者服务器是否支持Universal Links的网站,将刚刚配置好的链接https://你的域名/.well-known/apple-app-site-association填写至该网站并检测后稍等一会,如果你的显示和我一样,那么恭喜你。(ps:添加一个个人制作的Universal Links查询网站)
⑸ 模拟器测试
重新编译一次App,在Simulator中打开safari,输入你的域名,向下拉动页面,如果看到打开App的提示,那么大喊....Universal Links就已经配置成功了。
3.在AppDelegate中处理
在func application(_application:UIApplication, continue userActivity:NSUserActivity, restorationHandler:@escaping([UIUserActivityRestoring]?) ->Void) ->Bool中获取链接并处理,我这里获取的是微信的跳转,所以用的是微信SDK的方法。