晚上我想加个鸡腿
我想加个鸡腿,晚上
上面这两句话,表达的是同一个意思。先后顺序调换一下,没有太大的影响。
但是计算机程序,是按照代码顺序执行的,如果换了先后顺序,那逻辑就变了。
1.先看一个现象:看完激励视频,正常关闭,没有奖励。
这个时候用户就“咯噔”一下,神马情况,不给奖励,这不是相当于外卖付钱了,不给发货吗?
再看一个试试,结果还是同样的问题,不给奖励。
当遇到线上的产品,出现这样的情况;我就是被@的对象,有bug,你来解决。
嗯,莫慌,打个debug包,日志调试一下,发现有一家渠道的广告,先发送close的回调,再发reward的回调。通常是先reward,再close。
在业务逻辑当中,现在reward中,做一个标记,表示激励看完了,当用户关闭的时候,再给奖励。这么做就是避免reward消息来了,用户还没关闭,如果在用户没有看到的情况下给用户奖励,用户会以为没给。所以这里等close的时候再给。
也不知道哪个版本开始,突然遇到了回调的顺序变了,这就导致执行close的时候,reward还没有执行,标记位是false,此时就不给用户奖励,导致了误解。
2.再来看另外一个现象
回调执行多次,广告开始播放的回调执行的次数,是累加的。
看第1个广告的时候,广告开始播放的回调执行了1次;
看第2个广告的时候,广告开始播放的回调执行了2次;
看第3个广告的时候,广告开始播放的回调执行了3次;
看第4个广告的时候,广告开始播放的回调执行了4次。
这就相当于看了4次广告,后台统计打点,统计了10次。
此刻通过升级SDK版本到最新版,解决了这个问题;至于为什么,现在还没查明原因。
3.这就给SDK开发带来了很大的麻烦
平台修改了接口,如何避免线上的版本出问题。
这里建议如下:
-
不要用build.gradle依赖版本时,用+,最新版本是否兼容,这个说不好
-
建议平台的SDK,对外暴露的接口不要轻易修改,修改需要考虑兼容性。
-
自己每写一个版本的代码,都需要全面测试一下,功能是否还是正常的。
写完Android的SDK,写iOS;写完iOS,写Android。循环播放。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/171185.html