最近在升级一个将近10年的老项目。哈哈哈哈,贼吉尔的乱。
其中就用分享功能,使用pod管理三方库,其中就有 sharesdk。
抛出问题:
如下函数,调用后,就是不回调,配置参数等都无问题。
[ShareSDK share:(SSDKPlatformTypeWechat) parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
NSLog(@"分享回调")
}];
进入正题前,先吐槽一句,因为是升级吗,有些三方库都要升级,但是打开podfile文件,居然三方库后面没有一个是跟着版本号的。也就是现在用的什么版本,完全不知道。
最后只能 重新指定最新的版本号,然后pod install. 然后就会出现一堆错误。
开始一个一个修改,错误都适配完了,测下功能吧,傻眼了,怎么点分享就是不回调,啥信息没有,三方平台也调不起来。
依次排查不回调问题吧
1.先查看三方平台平台分享配置,然后清理缓存。
2.再查看三方库新版本的api,调用是否正确。
3.检查三方api是否不小心被hook了.
综上,所有的排查完毕,依旧没鸟用。
- 那TM的用相同的api,写个demo吧,如果demo也有问题,就找客服。
demo一运行,傻眼了,demo完全正常。
5.继续傻眼中,肿么办?Baidu吧,无相关答案。
6.终极大招,排除法吧,复制一份项目,删掉所有代码,只保留分享部分。
运行,哇擦,成功了。 由此得意的确定:工程配置没有问题,是TM的其他代码的问题。
7.好,继续排查是哪些代码的问题,再复制一份项目代码,注释掉AppDelegate中的无关代码,只保留分享VC的部分。
运行:哇靠,成功了。 嗯呵,终于让我找到了,就是AppDelegate中调用的几个代码的问题。
8.既然确定了是这几个代码的问题,那就回 项目中,试试吧。
在原项目中,也注释掉AppDelegate中的无关代码,运行,shit, 依旧不调用。
什么鬼,明明复制的项目可以啊,怎么一到原项目就不可以了。
9.继续在复制的项目上,索性把原项目的AppDelegate文件复制过来。运行,是正常的。
什么鬼。代码都一样,复制的就可以,原来的就不可以。
10.那就把原项目 再复制一个,运行,居然是正常的。见了个鬼了。居然不是代码的问题。
- 工程没问题,配置没问题,代码没问题,那能是什么问题????
难道是路径问题?? 验证一下。
注意(答案来了)
- 那就给原项目的 所在目录,改个名字吧。 运行,彻底傻眼,居然。。。 成功了。 回调了,老天爷啊,一天了,终于回调了。
嗯?,原因竟然是 pod更新完sharesdk,改一下工程代码的路径,就可以回调了。
分析
估计是XCode缓存问题,要么是pod缓存问题。不怪人家三方库。
网友评论