一:适配原因
由于苹果iOS 13系统版本升级,因为没有配置Universal Links导致微信和QQ分享失败,微信SDK在1.8.6.1版本进行了适配,支持通过Universal Links方式跳转完成应用安全校验,提升使用流程安全性。开发者需更新iOS 1.8.6.1版本SDK,并按苹果官网的要求,创建应用的Universal Links服务,随后在微信开放平台填写应用的Universal Links信息。
微信开发者平台,包括QQ目前新建应用都必须配置Universal Link,老本版存量问题,微信开发者平台公告:2020年3月起逐渐收回老版本功能。 QQ互联公告:将于2019年12月1日进行Universal Links校验,请开发者及时更新SDK3.3.7版本进行适配。
因为项目中使用的ShareSDK进行第三方分享。因此更新ShareSDK配置Universal Link就是必须要做的。
二:配置Universal Link
- 准备一个https的域名。
将配置好的apple-app-site-association存放在域名根目录下,或者放根目录的(.well-known)的子目录下,两者选一个。 可以多个app可共用同一个配置文件。 - 制作apple-app-site-association文件。
需要制作apple-app-site-association
文件并添加自己的配置项,apple-app-site-association
不能带后缀名。
appID:是TeamID+BundleID的组合
paths:是用于区分不同APP的路径,每个项目配置自己的唯一标识,必需以通配符*结尾。
针对微信和QQ每个项目需要配置两个path:
- 一个为微信开放平台格式如:"/标识app唯一的字符串/",如:"/appdemo1/";
- 一个按照QQ互联平台格式:"/qq_conn/qq互联appId/*",如:"/qq_conn/1101150000/*";
修改完 apple-app-site-association 文件发给服务端同学进行更新。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.com.xxx.app1",
"paths": [ "/app1/*","/qq_conn/1101150000/*"]
},
{
"appID": "TeamID.com.xxx.app2",
"paths": [ "/app2/*","/qq_conn/1101160000/*"]
},
]
}
}
在appstore对应的bundleID开启Universal Link服务,更新描述文件后下载安装。
-
在Xcode开启Associated Domains,并填写对应的Domains。
这里只需要填写Domain就行不需要path,例如填写:applinks:help.wechat.com
-
测试配置是否成功。
重新打包安装app,然后在手机Safari浏览器中输入:域名+path (例如:https://help.wechat.com/xxxx/ )并下拉,看是否有跳转App的链接。
三:配置微信开发者平台
-
登录微信开发平台,进入对应的项目控制台,更新Universal Link为你配置的domain+path。
- 更新shareSDK到最新版本,微信API初始化的时候需要设置UniversalLinks,必需和开放平台设置的一致。
[WXApi registerApp:weiXinAppId universalLink:@"https://xxx.xxxx.com/path/"];
- 在AppDelegate 添加事件回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRest
oring>> * __nullable restorableObjects))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
- 更新ShareSDK初始化方法
[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
[platformsRegister setupQQWithAppId:QQAppId appkey:QQAppSecret];
[platformsRegister setupWeChatWithAppId:weiXinAppId appSecret:weiXinAppSecret universalLink:@"https://xxx.xxx.com/path/"];
}];
四:配置QQ互联平台
修改universalLink配置(请注意只需要输入host,如:xxx.xxx.com)
五:问题排查
- 分享提示失败
检查 BOOL bol = [WXApi registerApp:weiXinAppId universalLink:@"https://xxx.xxx.com/path/"] 注册的时候返回值如果为No,有可能是URL Scheme 配置错误或遗漏。
请检查是否添加weixin和weixinULAPI: