微信官方声明:
openSDK1.8.6 由于苹果iOS 13系统版本安全升级,为此openSDK在1.8.6版本进行了适配。 1.8.6版本支持Universal Links方式跳转,对openSDK分享进行合法性校验,提升使用过程中的安全性。 我们建议开发者使用新版本SDK测试时,覆盖测试微信7.0.7版本、iOS12以及苹果新推出的iOS13,以验证所使用的接口的功能性和可用性。
微信开放平台官方更新文档
背景
随着iOS13系统的正式推送,各家第三方SDK都对其或多或少进行了更新适配,但在微信SDK更新后,导致APP突然不能跳转微信进行登录和分享了,本篇文章是适配踩坑之作,供参考。
2019/09/29更新
经过尝试,不知道微信的SDK是怎么更新的,好像并不需要Universal Links
支持就可以,大家可尝试一下步骤,如不行继续往下看即可:
- 注册时填入“https://”即可(
注意:经过尝试,这里的universalLink必须和微信后台填入的一致,直接这样填是不可行的,只是单纯能调起微信,无法分享和登录,建议大家还是按下面步骤来操作吧
)
[WXApi registerApp:@"xxx" universalLink:@"https://"];
- 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如
0x1
所示) - 在微信后台配置Universal Links,链接符合要求即可。
以上步骤若仍不能解决跳转微信问题,可继续看如下的踩坑之旅。
环境
Xcode10.1
,iOS12.4
0x1
更新SDK1.8.6后,微信的API发生了少许变更,其中注册的API需要传一个Universal Links
,因为我们的APP并不需要支持,所以想着直接传了nil
,如下:
[WXApi registerApp:@"xxx" universalLink:nil];
按照新API更改编译通过、运行。发现不能微信登录和分享。点击后无法跳转微信,且报错如下:
-canOpenURL: failed for URL: "weixinULAPI://" - error: "This app is not allowed to query for scheme weixinulapi"
回看一下微信的文档发现,可能需要进行这样的配置:
按此配置完成后,仍然不能跳转,且报错:
-canOpenURL: failed for URL: "weixinULAPI://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
但是官方文档并没有此错误编号-10814
,陷入了沉思。
0x2
仔细阅读微信声明的更新文案后,想着,难道必须支持Universal Links
才行吗?尝试配置试试看。参考了其他博主配置步骤:
- iOS9 Universal Links踩坑之旅,移动应用之deeplink唤醒app
- 苹果官方文档
其实上面博主写得已经挺明确了,但是中间还是遇到一些问题,这里我贴出我的配置供大家参考:
apple-app-site-association
文件
Xcode配置
有两点原因使我想着自己暂时把apple-app-site-association
文件上传到阿里云进行测试
- 自己测试不想麻烦后台帮忙传
- 阿里云的OSS支持https,而我们测试服不支持https,还得拿证书去配置,麻烦
Universal Links
配置OK后,尝试了,能直接跳到我们的APP了,所以至此我们的APP已经支持Universal Links
。
0x3
在微信后台配置Universal Links
,以为需要审核,然而并不用,直接生效了。这里的链接有要求,已/
结尾
最终配置:
最后
修改微信注册API,运行尝试看此方法的返回值是不是YES
。只有返回YES
才算OK,如还不行,可能微信后台有延迟,因为它说它会进行比对的。过几分钟再尝试,应该问题不大了
[WXApi registerApp:@"xxx" universalLink:@"你的微信后台配的Universal Links"];
到这里,你已经成功完成了微信openSDK1.8.6对iOS13系统的适配工作。微信登录和分享功能已正常。恭喜?
如你在此过程中仍然遇到一些问题,欢迎邮件联系我,我们一起交流讨论