微信支付,微信第三方登錄,微信一次性訂閱帶給我的痛
微信支付,微信第三方登录,微信一次性订阅带给我的痛!!!!
为什么这么说呢,在实际开发中微信支付,微信第三方登录以及微信一次性订阅是非常常见的,但是在上架的前几个小时我才发现微信第三方登录不起作用了,我不知道什么原因,大概这个BUG找了近一个小时,才发现我根本就没有访问到回调。。。。。
这也是一个小问题,可是这一个小问题差点导致我无法正常上架。所以我要记录下来我找BUG的过程,深刻的认识到自己的技术还是不够好,接下来我要回过头重新梳理我学过的知识,为期一个月,希望这一个月的回顾有新的收获,把以前不甚了解的知识能彻底领悟,已懂的知识加强巩固,我相信不会失望的。。。。。
找BUG的经历
1、测试发现微信第三方登录无法正常使用,可是之前还好好的,这是怎么回事呢?开始我还以为是后台的问题,没有多管,(有点不负责任)
2、快上架了,此时已经下午4:30了,问了一下安卓,安卓说没有问题,可以正常登录,那十之八九就是iOS端的问题
3、我想到我可能是微信支付,微信第三方登录和微信一次性订阅冲突了,于是我调试了一下,微信支付和微信一次性订阅都可以走通,没有问题,包括微信分享都没有影响,为什么只有第三方登录有问题呢?
4、带着问题我又打开友盟第三方文档走了一遍,感觉没有问题啊?接着我又看了微信支付和一次性订阅的文档,还是没发现问题所在。
5、这个时候已经5:30了,小萌快着急死了,怎么办呢?
6、最后我终于想到会不会是回调的问题呢,可能是我回调判断有误?
7、我带着疑问打了断点,跟踪了一下每一个回调返回的 URL 发现又一个共同点,那就是都是 前缀协议 都是一样的,导致我判断的时候出了问题。
修改BUG
找到问题所在接下来就是修改BUG了,小萌之前写的代码:
if ([strUrl rangeOfString:@"pay"].location != NSNotFound) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
else if ([strUrl containsString:WECHAT_APP_ID]){//微信一次性订阅
[self webectSub:strUrl];
return [WXApi handleOpenURL:url delegate:self];
}
//友盟分享
return [[UMSocialManager defaultManager] handleOpenURL:url options:options];
这样写代码也就是微信支付,微信一次性订阅都有效,而微信第三方登录都失效的原因。
修改之后:
//6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];
if (!result) {
NSString *strUrl = [NSString stringWithFormat:@"%@",url];
if ([strUrl rangeOfString:@"pay"].location != NSNotFound) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}else if ([strUrl containsString:WECHAT_APP_ID]){
[self webectSub:strUrl];
return [WXApi handleOpenURL:url delegate:self];
}
// 其他如支付等SDK的回调
}
return result;
这是友盟的判断方法,还是大牛作品呀,问题解决啦,顺利上线。。。。
这虽然不是什么大问题,可是却花了我一个多小时的时间,记录一下这个过程以及上线之前的着急心慌,提醒我遇到问题一定要冷静,因为问题是要解决的,沉着却能快速的找到问题所在,还有就是技术知识不够扎实,接下来的一个月小萌就开始了 查漏补缺 ,希望自己更上一层楼
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章