配置 Universal Link
- 创建一个json文件,格式固定,无需更改。
{
"applinks": {
"apps": [],
"details": [{
"appID": "teamID.bundleID",
"paths": ["*"]
}
]
}
}
配置文件中的details数据, 其中的appID对应的value为teamID 和 bundleID。配置时用“.”拼接,如上述代码teamID在前,bundleID在后。上述两个ID,可以在苹果的开发者网站内找到,顺便将Associated Domains选中。
- 编辑完成后,导出文件,并命名为 apple-app-site-association。若有扩展名,必需隐藏扩展名(官方文档有规定)。
- 生成此文件,将它放入App所用域名的根目录下。
配置项目
- xcode打开工程,上面的操作我们已经开启了Associated Domains,这里直接配置就行了。
applinks:+ App的域名,例如:applinks:apple.com
- 在AppDelegate中,添加如下方法:
- swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity, delegate: self)
}
- oc
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *webpageURL = userActivity.webpageURL;
NSString *host = webpageURL.host;
if ([host isEqualToString:@"apple..com"]) {
//进行我们需要的处理
[WXApi handleOpenUniversalLink:userActivity delegate:self];
}
else {
[[UIApplication sharedApplication]openURL:webpageURL];
}
}
return YES;
}
另外,微信的分享接口也已发生了细微变化,增加了分享完成的回调
[WXApi sendReq:req]; // 弃用
[WXApi sendReq:req completion:^(BOOL success) {
}]; // 带回调的新接口
检测是否配置成功
1. 将App删除后,重新编译,安装到手机。
2. 打开Safari,输入App所使用的域名,在网页界面下拉一下
3. 如发现界面顶部有App的入口,点击后,可跳转到App,则表示配置成功。
配置微信开发平台信息
需将App域名添加到微信开放平台的信息中,如: https://apple.com/
注意:
此处域名必须支持https
首次发起分享时,会出现二次跳转的行为,具体流程:App拉起微信 - 出现“正在连接”界面 - 返回App - 重新打开微信。这是新的验证流程,每个用户首次使用时都会出现上述跳转。(如同一用户多次使用分享均出现跳转,请检查Universal Links配置 )
使用pod集成weixinSDK,如果无法获取到1.8.6以上版本,请在官网手动下载,手动替换工程pods中的weixinSDK静态库,头文件,重新编译。
配置完成,可以成功分享,依然看到“未验证应用”:未验证应用名单非实时更新,前一天有接入新SDK(1.8.6版本以上)并且有正确调用记录第二天才会移除出名单。官方的问题排查文档
特别强调:第一,可以成功访问到你放在公司域名下的apple-app-site-association文件;第二,在工程里配置applink的环境变量时,注意要把debug和release两个版本都配置上。如果你是发的release版本而没配置,就会提示未验证应用,且可能无法从微信返回app;第三,检查微信后台有没有写对。