iOS13适配篇:微信openSDK1.8.6更新导致不能进行微信登录和分享问题解决方案

微信官方声明:

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支持就可以,大家可尝试一下步骤,如不行继续往下看即可:

  1. 注册时填入“https://”即可(注意:经过尝试,这里的universalLink必须和微信后台填入的一致,直接这样填是不可行的,只是单纯能调起微信,无法分享和登录,建议大家还是按下面步骤来操作吧
[WXApi registerApp:@"xxx" universalLink:@"https://"];
  1. 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如0x1所示)
  2. 在微信后台配置Universal Links,链接符合要求即可。

以上步骤若仍不能解决跳转微信问题,可继续看如下的踩坑之旅。

环境

Xcode10.1iOS12.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"

回看一下微信的文档发现,可能需要进行这样的配置:
iOS13适配篇:微信openSDK1.8.6更新导致不能进行微信登录和分享问题解决方案_第1张图片
按此配置完成后,仍然不能跳转,且报错:

-canOpenURL: failed for URL: "weixinULAPI://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

但是官方文档并没有此错误编号-10814,陷入了沉思。

0x2

仔细阅读微信声明的更新文案后,想着,难道必须支持Universal Links才行吗?尝试配置试试看。参考了其他博主配置步骤:

  1. iOS9 Universal Links踩坑之旅,移动应用之deeplink唤醒app
  2. 苹果官方文档

其实上面博主写得已经挺明确了,但是中间还是遇到一些问题,这里我贴出我的配置供大家参考:

apple-app-site-association文件
iOS13适配篇:微信openSDK1.8.6更新导致不能进行微信登录和分享问题解决方案_第2张图片
Xcode配置iOS13适配篇:微信openSDK1.8.6更新导致不能进行微信登录和分享问题解决方案_第3张图片
有两点原因使我想着自己暂时把apple-app-site-association文件上传到阿里云进行测试

  1. 自己测试不想麻烦后台帮忙传
  2. 阿里云的OSS支持https,而我们测试服不支持https,还得拿证书去配置,麻烦

Universal Links配置OK后,尝试了,能直接跳到我们的APP了,所以至此我们的APP已经支持Universal Links

0x3

在微信后台配置Universal Links,以为需要审核,然而并不用,直接生效了。这里的链接有要求,已/结尾
在这里插入图片描述
最终配置:
iOS13适配篇:微信openSDK1.8.6更新导致不能进行微信登录和分享问题解决方案_第4张图片

最后

修改微信注册API,运行尝试看此方法的返回值是不是YES。只有返回YES才算OK,如还不行,可能微信后台有延迟,因为它说它会进行比对的。过几分钟再尝试,应该问题不大了

[WXApi registerApp:@"xxx" universalLink:@"你的微信后台配的Universal Links"];

到这里,你已经成功完成了微信openSDK1.8.6对iOS13系统的适配工作。微信登录和分享功能已正常。恭喜?

如你在此过程中仍然遇到一些问题,欢迎邮件联系我,我们一起交流讨论

你可能感兴趣的:(iOS开发)