微信OpenSDK1.8.6升级之路

0.前言

3月份的时候看到 微信开发者 发布的公告:“微信开放平台移动应用SDK更新提醒”

编译后的结构.png

要求开发者将微信 SDK 升级到 1.8.6.1 或更高版本,后期将逐步对 iOS 旧版本 SDK(版本号低于1.8.6.1)的能力进行阶梯式调整:

  • 2020年3月20日起对旧版本 SDK 发起的分享增加 “未验证应用” 安全提示
  • 2020年6月1日起限制旧版本 SDK 使用微信分享、微信登录、打开小程序、一次性订阅消息等能力

既然如此,那就抓紧升级吧!

一、微信官方 SDK 升级

1. 升级

按照 微信官方文档接入指南 操作就行,需要注意的是:

  • 无后缀文件 apple-app-site-association 需要放在 UniversalLink 中的域名的根目录下,微信开放平台中填写的 UniversalLink 需要和 App 中注册 SDK 时填写的 Universal Link 一模一样,以 / 结尾,且不含 *,如:https://devhe.com/webview/

  • 无后缀文件 apple-app-site-association 中的 paths 只填写 path 不包含域名,但包含 *,如:

1
2
3
4
5
6
7
8
9
10
11
12
// 文件名:apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "开发者账号的teamId.应用的BundleId",
"paths": ["/webview/*"]
}
]
}
}

2. 验证

目前提供了以下三种方案可以用来验证升级是否成功:

1
2
3
4
5
6
7
8
9
10
11
12
// 在register之前打开log, 后续可以根据log排查问题
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
NSLog(@"WeChatSDK: %@", log);
}];

// 务必在调用自检函数前注册
[WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];

// 调用自检函数
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
NSLog(@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];

3. 补充

  1. 如果自己查不出来的话,可以到 微信开放社区 联系他们的 技术运营 帮助排查,可以自己发布问题或者在别人提问的地方向运营发问,一般会要求上传 日志,并提供 appid微信号问题发生的时间点(精确到分钟) 等信息。

  2. 微信是有一个黑名单的机制,当一天内使用新版本SDK分享的数量占比大于10%的话,第二天会从黑名单移除,也就不会有 “未验证应用” 的提示了。不过,如果接下来没有使用新版SDK分享的话,又会出现提示-_-||

  3. 测试一定要覆盖所有版本的 iOS 系统,笔者曾遇到过在 iOS 13.5 以下系统上可以正常分享,但在 13.5 及以上系统上分享异常的情况。

二、友盟升级

如果项目中单独导入了微信官方的SDK,又使用了友盟提供的分享,那么若只执行上一步的升级,还是会出现:分享到微信时提示 “未验证应用”,所以需要对友盟进行相应的升级,不过似乎没有通知开发者( 也许只有我们没收到消息-_-|| )。

需要注意的问题:

  • 版本选择:推荐更新到最新版本(目前是 6.9.9,对应微信 SDK1.8.7.1),且只能使用完整版SDK(精简版只支持到微信 SDK1.8.5)

  • libWeChatSDK.a 文件冲突:因为我们之前单独导入了微信SDK做第三方登录,又导入友盟做分享,升级友盟后需要使用完整版SDK,这样就会出现 libWeChatSDK.a 文件冲突的问题,为此和客服沟通后确认,可以将之前单独导入的微信SDK删除,直接使用友盟里边的SDK就可以了,原有登录及SDK相关代码不需要修改。

  • 友盟的客服做的还是比较好的,会及时回复消息,在此表示感谢!默认是机器人,如果需要人工客服,多发几遍问题,输入框的上边的一排按钮就会出现 召唤人工客服 的卡片,点击后马上就有客服人员跟你联系了。

  • 验证可以参考微信官方 SDK 的验证方式,此略。

参考

0%