前言
接到一个需求app需要接入支付宝登录,而安卓端可以通过urlScheme拉起,ios端则是苹果新定义的协议Universal Link
Universal Link
苹果新推出的app之间跳转方法
应用比较广泛案例:用户分享app中某个内容到微信,用户在微信聊天中点开这个(universal link),例如:www.xxx.com/mypage?id=1… 就可以直接跳转到app中的个人主页页面!然而微信的webview中检测到uniersal link,禁止了跳转。那一般的解决方法就是:在微信浏览器网页中提示用户在safari中打开该网页,在safari中打开该网页就可以直接跳转app。
Universal Links配置步骤及验证
建一个名字叫做apple-app-site-association,包含固定格式的json文件内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.com.demon.lan",
"paths":["*"]
}
]
}
⚠️ 注意事项:
- 文件名字必须为apple-app-site-association,不能带json后缀名,不能带json后缀名,不能带json后缀名,重要的事情说三次。
- apple-app-site-association中的appID 的格式为 teamID.BundleID,teamID和BundleID在开发者网站 Identifiers一栏可以找到。(BundleID在xcode里面也可以找到)
服务器的配置:
将apple-app-site-association文件上传到服务器这个需要后端开发配合完成,将这个文件放到服务器的根目录下或者放到.well-known目录下
验证Universal Links配置是否成功
如果已经配置过Universal Links,那么在用户第一次安装app时,苹果会发送一个请求,请求你服务器上的apple-app-site-association文件。
请求apple-app-site-association文件成功之后,用户就可以使用Universal Links唤醒app了。测试的咱们最好把应用删了重新装,确保苹果会发请求。
以下几种测试方法可以参考:
1.直接将https://universal Link复制到Safari打开,记得下拉以下看看会不会出现APP的跳转栏。
- 快捷验证,在备忘录中输入https://universal Link/apple-app-site-association,长按这个链接,如果能正常显示出apple-app-site-association文件内容,则表示服务端已经上传成功了。
- 使用苹果的验证网站(有时候会抽风访问不了),验证文件是否能被苹果请求到。另外找苹果官方测试网站好像没了,找了半天 找到下面平替网站(要翻墙)实测是否配置的apple-app-site-association连接是否生效branch.io/resources/a…
常见问题以及解决办法
-
appid和项目中为什么要配置支持associate domains呢?
为了在app启动的时候告诉系统,我这个app支持Universal Links呀,这样系统才方便根据项目中配置的domain域,去下载apple-app-site-association文件呀。
-
为毛有的手机成功了,有的手机就不行呢???
上面也提到过,因为网络波动有可能会导致部分用户第一次安装时,无法下载apple-app-site-association文件,这个只能引导用户删除重装或者在迭代时修改Associated Domains配置告诉系统重新下载apple-app-site-association文件。
-
所有配置都完全没问题,但是通过备忘录与Safari测试死活不通过
自己测试时候也遇到过,以为是app缓存,然而删掉app重装也没效果!最后删掉app、重启手机,再测试居然通过了,这是内置在手机系统文件里了吗 啊啊啊啊!!!
Comments NOTHING