问题
我的问题是App点击微信登录跳转到微信,然后没有确认授权直接跳回App,就没有后续了
解决办法
查找了微信的官方文档和论坛,很多人都有这个问题,下面是看到的几种解决办法也没有解决我的问题,最后会附上我的解决办法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
这个方法是必须的
- universalLink需要与微信开放平台的链接一致,比如都需要带“/”,Associated Domains的链接为applinks+去掉https的域名不带“/”
- 开启Log方法startLogByLevel,开启自检函数continueUserActivity,注意register的方法要放在前两个方法中间,运行程序检查打印Log
- 自检函数All checked了还是不行,sendReq:completion返回的是NO,打印的是wxlog:Error:set token fail, errCode:4
还是没解决办法
前前后后检查了apple-app-site-association,Bundle Identifier是否支持Aassociated Domains,甚至更新了微信的SDK到最新,还是不行,直到看到一个解决办法
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [[UMSocialManager defaultManager] handleUniversalLink:activity options:nil];
}
有人反馈说这样就可以了,表示友盟的分享与微信登录有冲突,但是我修改了还是不行。
但是反映出一个信息,会不会跟友盟的分享有关,从头到尾我们的代码都是没问题的,都是友盟搞的鬼。因为我们的app使用了友盟分享,所以直接删掉了之前的微信登录代码,使用友盟的登录就好了。
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
UMSocialUserInfoResponse *resp = result;
***
}];
总结
因为看微信的论坛反馈这个问题都是最近的,所以认为应该是友盟与微信冲突了微信还没有解决,所以要么删除友盟使用微信的SDK,要么使用友盟登录。
现在想想还挺好玩,微信论坛上那么多关于这个的问题,客服表示你们按照我给的解决办法就能解决,怎么还是没解决呢,他也没想到原来是外部原因UM导致的。