最近我们的iOSApp微信分享,分享后会部分手机会出现未验证应用的情况,大大降低了用户的体验。注意事部分手机。经过查找发现是微信的问题,目前是灰度测试,后续如果不按照他们最新的对接可能全部分享都会显示未验证应用标识。中间也出现了些其他的小插曲,下边我们按照步骤依次来修改。
一、升级SDK版本
1.首先看下自己项目中微信分享是否是最新版本,不是的话需要先升级到最新的版本目前是1.8.7版本。
2.如果之前你应用间跳转用的是URL Schemes的跳转,那么在升级SDK后就不能使用此方式进行App内外跳转了,必须使用Universallink方式跳转
二、生成和配置Universallink
这里可以自己生成Universallink,这里不做具体描述。因为我们用的是ShareSDK,它会提供自动生成Universallink。
1.打开MobTech,执行下图,完成ShareSDK的工作。
2.配置关联微信开放平台的universallink。
【管理中心】-【移动应用】-【选择要配置的应用】-【开发信息修改】
3.如果需要QQ分享也需要到QQ开放平台QQ互联。
【应用管理】-【移动应用】-【查看】-【平台信息】-【修改】,修改内容跟微信平台几乎一致,跟着QQ要求添加所需内容在mob平台里查找。
二、配置项目工程
1.苹果开发者中心找到对应的bundleID,修改打开【Associated Domains】选项。
2.在Project中【Signing&Capabilities】中添加【Associated Domains】
3.pod更新到最新的SDK,我这里pod 'mob_sharesdk', '~> 4.3.8'
,你也可以pod微信或者QQ的开放SDK。
4.plist文件中【LSApplicationQueriesSchemes】中添加微信对应的白名单。
三、代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
此方法中添加注册微信和QQ或者ShareSDK的配置。
比如: [WXApi registerApp:wechat_appid universalLink:wechat_universalLink];
函数检测:
//在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(@"WeixinSDK2:%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];
控制台输出:
2020-06-15 14:30:37.718227+0800 SXAutoStreets[10552:2910027] WXApiSDK2:0, 1, check passed,
2020-06-15 14:30:37.718377+0800 SXAutoStreets[10552:2910027] WXApiSDK2:1, 1, check passed,
2020-06-15 14:30:37.720022+0800 SXAutoStreets[10552:2910027] WXApiSDK2:2, 1, check passed,
2020-06-15 14:30:37.780891+0800 SXAutoStreets[10552:2910027] WXApiSDK:wxlog:set property list
2020-06-15 14:30:37.790073+0800 SXAutoStreets[10552:2910027] WXApiSDK2:3, 1, check passed,
2020-06-15 14:30:38.390261+0800 SXAutoStreets[10552:2910027] WXApiSDK2:4, 1, check passed,
2020-06-15 14:30:40.781874+0800 SXAutoStreets[10552:2910027] WXApiSDK2:5, 1, Universal Link check passed. The application is launched by WeChat via Universal Link,
2020-06-15 14:30:40.781981+0800 SXAutoStreets[10552:2910027] WXApiSDK2:6, 1, All Check Passed!,
如果0-6共7个步骤全部输出check passed,代表正确,否则代表有问题,需要一一查找。具体可以参考此流程对照。
2.添加方法,该方法不添加会造成4之后流程不通过和支付流程出现问题。切记!!!
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
到此我们要做的事情就完成了,新版本放量上去让整体错误率下降到90%以下才会从未验证应用中移除。所以版本更新后,我们需要做的事情就是需要等几天了。