友盟分享到微信时Universal Links问题总结

最近领导说:以前老的友盟分享,分享到微信会有一个(未验证应用)标记。
解决问题的路就开始了。

因为是swift项目,pods使用framework,不能一键集成。于是按照友盟的文档,把组件化后的友盟库全部手动拖到项目里。

错误来了:

1、MobClick报错

友盟文档里说了,合并到了基础库里,改了一下头文件解决。

2、Universal Links问题:

新版本微信必须支持Universal Links,照着友盟的文档,后来又面向百度编程,把UL配上去了。
这些好搜索,照着做就好了。

接下来是深坑:

2.1 友盟开始报错了

https://developers.weixin.qq.com/community/develop/doc/0004e4afac0b40b2557a65ef251000
这篇反馈,写出了这位coder的绝望,友盟的回复也很玄学,改一改信息就好了?
很明显这里是不对的,于是不信邪的我,换成微信的SDK方法直接测试

2.2 微信也报错?

https://developers.weixin.qq.com/community/develop/doc/0004843ea80008d8440b6242a5ac00?_at=1602816121104
这篇文章的回复也同样令人窒息,微信支持说报一下日志?
在链接里点了几篇相似帖子看,微信建议照着文档调试,那就照着文档一步步来吧!

2.3 调试

微信和自己的项目,都通过Safari调试了,都可以通过UL唤起
问题到底在哪里?
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html
微信这篇接入说明里,有调试这一步。
// WXApi.startLog(by: WXLogLevel.detail) { (log) in
// print("WeChatSDK: ", log);
// }
// WXApi.registerApp("你的SDK", universalLink: "你的Universal Link")
// WXApi.checkUniversalLinkReady { (step, result) in
// print("WeChatSDK: ", step.rawValue, result.success, result.errorInfo, result.suggestion)
// }
直接通过调试打印,每一步都没报错,可就是进了一下微信授权页面,就没动静了
那应该是步骤错了

2.4 WXULCheckStep一共有7步

转折来自于WXULCheckStep这个枚举
这里一共有7步,微信文档上说,checkUniversalLinkReady打印false的时候,就是出错了,我这里打印的都是true,但是到了第5步就没了下文。
进去这个枚举看,还有回调的剩下两步竟然没走!!!!!
问题精确到了点上,就猜到了可能是回调方法的问题,是不是写错了?

2.5 最后在微信的文档里发现惊喜

WXApi文件里有这样一个方法


image.png

加到appdelegate里面就好了。
至此通过微信直接调用分享已经打通

3、 友盟你是想干啥?

回调的问题测试好了,我又按照友盟的步骤来,把微信相关的重新写了一遍,发现又不行了!!!!
❓❓❓❓❓❓❓❓❓❓❓
又出现了玄学三联问
UMengShare<6.9.8>(Info):[UMSocialManager:442][SCI10006]分享/授权登录后如果无法返回应用(微信、QQ、微博等平台)。 https://developer.umeng.com/docs/66632/detail/67028?um_channel=sdk

UMengShare<6.9.8>(Info):[UMSocialWechatHandler:1118][SWI10007]微信分享报错提示,请请检查微信是否安装。 https://developer.umeng.com/docs/66632/detail/67042?um_channel=sdk

UMengShare<6.9.8>(Info):[UMSocialWechatHandler:1119][SWI10009]微信分享报错'由于invalid_app无法分享到微信。 https://developer.umeng.com/docs/66632/detail/67044?um_channel=sdk

经过测试,我把微信的注册方法取消注释,和友盟的注册方法同时写上,就不会出现这个问题了。那就是友盟没把Universal Link注册进去。虽然我已经在注册appid代码之前写了
UMSocialGlobal.shareInstance()?.universalLinkDic = [UMSocialPlatformType.wechatSession:"我的Universal Link"]

最后,我在友盟注册之前把微信的注册方法调用一遍,问题算是解决了吧。

还拉着我的小伙伴跟我一起找了半天资料,感谢他。


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。