概述
对以前的项目进行版本升级时发现,微信支付为迎合 iOS 13 要求进行了部分升级(openSDK1.8.6
)。
其中最主要的就是将跳转方式改为Universal Links为的就是对发起分享的合法性校验。
相关链接
什么是Universal Links?在应用中需要整么配置Universal Links呢?
一、何为 Universal Links
翻译过来及 通用链接。
是iOS9的新特性,是对原的scheme调起应用的方式进的优化方案。
能够方便地通过打开一个Https链接来直接启动您的客户端应用(手机有安装App)。对比起以往所使用的URL Sheme, 这种新特性在实现web-app的无缝链接时能够提供极佳的用户体验。
能实现网页到应用的无缝对接。如:从网页端无缝跳转到APP应用,并且当本机未安装该应用时还能打开指定网页。
体验
微信的Universal Links,在Safari浏览器输入https://help.wechat.com/app/
并打开,可发现打开微信应用的按键。
既生瑜何生亮
为什么会推出通用链接呢,还得说说原scheme的缺点:
1. schema 隐私问题
利用schema机制,使用AppDelegate
的canOpenURL
方法 就可以知道 用户手机里面 都安装了啥(在iOS9限制了该方法) 。 而通用链接这方面更安全。
2. schema 容易重复
schema是开发人员自定义的,无统一结构管理,很容易出现两个应用注册相同schema 的情况;而通用连接使用域名方式,不会出现重复问题。
3. schema 体验缺陷
当本地未安装相关调应用时则无响应;而通用链接可以直接跳转已经安装的app或者跳转到该应用的下载页,达到功能性闭环。
这么说来感觉通用链接还不错,怎么使用呢?
二、配置 Universal Links
1. 开通 Associated Domains 功能
登陆苹果开发者账号,创建应用;并开启该AppId下的Associated Domains(关联域名)功能(在IDENTIFIER
中并勾选Associated Domains
)。
2. 部署apple-app-site-association文件
创建json格式的一个空文件(文件名为apple-app-site-association,并且没有后缀!)放在指定服务器根目录,提供一个Https的访问地址。
如:https://www.baidu.com/.well-known/apple-app-site-association
该json文件格式如下:
{
"applinks": {
"apps": [],
"details": [{
"appID": "G63E53LeQ3.com.cskj.jzb",
"paths": ["/myapp/*"]
}]
}
}
-
appID:TeamID+BundleId的组成。
对应参数查看可见下图:
-
paths:是设置允许的路径列表,可以是一个也可以是多个,最简单的方式是使用“*”,通配符,表示允许该域名下的任意路径。(注意:paths中的大小写是敏感的。)要注意微信在使用唤起第三方App时,会在Universal Links末尾拼接路径和参数。
-
多个应用时,需要使用不同的paths进行区分。
-
服务器配置注意事项:apple-app-site-association文件名固定,不能修改,不能加后缀;必须支持https且不能重定向。
-
确认部署成功:使用https链接可直接访问apple-app-site-association文件内容。
3. 项目配置 Associated Domains
原生项目
在Xcode中配置关联域名。
打开Xcode,选择project → Signing & Capabilities → + Capability 找到“Associated Domains”并添加。
找到Associated Domains。
点击允许按钮,在Domains中添加对应的域名。Domains中的域名必须是使用applinks:
开头,然后录入即可。
如:applinks:www.baidu.com
uniapp 项目
在manifest.json中配置域名打包后生效。
- HBuilderX中自带的默认真机运行基座HBuilderX注册的通用链接为:
https://demo.dcloud.net.cn/ulink/
当app第一次启动之后,会自动从你自己的域名目录下下载这个apple-app-site-association文件。
4. 微信平台配置 Universal Links
到微信开发平台的“管理中心”里,更新你的iOS移动应用的Universal Links
值。
Universal Links
值要求https开头,以“/”结尾。Universal Links
值需要包含paths通配符。
如: https://www.baidu.com/myapp/
5. 功能验证
-
浏览器输入https://域名/.well-known/apple-app-site-association可以正确显示apple-app-site-association文件内容,或下载文件;
-
手机浏览器输入域名+路径+其他地址,下拉页面可以显示打开App提示;(注意: 使用这种验证方式,修改配置文件后需要卸载重装App后,配置才会生效)