配置 Universal Link
创建一个json文件,格式固定,以下配置为此域名下所有链接,均跳转至app。Ps: 特殊情况会出现问题。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleID",
"paths": [
"*"
]
}
]
}
}
此处为本人刚刚遇到的特殊情况流程:
在微信公众号商城中,购买商品。支付列表中,使用支付宝支付,由于不能直接调起支付宝,所以需要在Safari中打开。此时跳转到Safari后(此处默认已经安装了该商城的app),并不会询问打开支付宝,而是会直接调起app,并不会进行支付询问。
解决以上情况的方法为,确定具体的通用路径,配置如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleID",
"paths": [
"/linkPath/*", "/wechatAppId"
]
}
]
}
}
linkPath为app分享出去的路径,后面需要接通配符“*”。
加入wechatAppId的目的是微信分享后,能正常返回app。 因为如果项目中,没有微信分享的话,可以将wechatAppId去掉。
Ps: wechatAppId后面,不需要写通配符“*”。
配置文件中的details数据, 其中的appID对应的value为teamID 和 bundleID。配置时用“.”拼接,如上述代码teamID在前,bundleID在后。上述两个ID,可以在苹果的开发者网站内找到,具体位置如下图,顺便将Associated Domains选中。
编辑完成后,导出文件,并命名为 apple-app-site-association。若有扩展名,测需隐藏扩展名。如下图:
生成此文件后,需将此文件,放到https web服务器的根目录或子目录.well-known下
配置项目
上面的操作我们已经开启了Associated Domains,这里直接配置就行了,如下图:
applinks:+ App的域名,例如:applinks:baidu.com
在plist文件中,新增weixinULAPI,如下图:
在AppDelegate中,添加如下方法:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity, delegate: self)
}
至此,Universal Links 配置完成。
检测是否配置成功
将App删除,重新编译完成,安装到手机后。打开Safari,输入App所使用的域名,然后下拉一下,如果发现界面顶部有App的入口,点击后,可跳转到App,则表示配置成功。如下图:
配置微信开发平台信息
需将App域名添加到微信开放平台的信息中,如: https://baidu.com/
特别注意:
1. 此处域名必须支持https
2.首次发起分享时,会出现二次跳转的行为,具体流程:App拉起微信 - 出现“正在连接”界面 - 返回App - 重新打开微信。这是新的验证流程,每个用户首次使用时都会出现上述跳转。(如同一用户多次使用分享均出现跳转,请检查Universal Links配置 )