[线上] cta banner 倒计时时间过长导致 endcard 黑屏问题

2019/03/11

备注

zip包模板 (hybird/nightmare):
1. tpl1
2. ~~tpl2~~ 虽然有 trigger('showBanner'), 但是 tpl2.js 中没有 showBanner 的逻辑
3. ~~tpl3~~ 模板6因为是全屏播放的原生视频, 实现的关闭按钮等空间也都是原生的, 所以需要SDK修复
4. ~~tpl2-blurry~~ 模板基础逻辑来源于tpl2, 也没有 showBanner 的逻辑
5. ~~endv4jump~~ endcard 模板不需要增加这个逻辑
6. kiloo

通用模板 (hybird/rv):
tpl1,2,3,noadsv1等页面需要修改不

提测地址:

视频播放模板1:
https://test-hybird.rayjump.com/rv-zip-007/tpl1-79da3ddb283511c5d1d89c982b4eb053.zip?md5filename=79da3ddb283511c5d1d89c982b4eb053&foldername=tpl1&layout=1&tpl=1&wfr=1&to=9999

视频播放模板2:
https://test-hybird.rayjump.com/rv-zip-007/tpl1-79da3ddb283511c5d1d89c982b4eb053.zip?md5filename=79da3ddb283511c5d1d89c982b4eb053&foldername=tpl1&layout=2&tpl=1&wfr=1&to=9999

视频播放模板5:
https://test-hybird.rayjump.com/rv-zip-007/tpl1-79da3ddb283511c5d1d89c982b4eb053.zip?md5filename=79da3ddb283511c5d1d89c982b4eb053&foldername=tpl1&layout=3&tpl=1&wfr=1&to=9999

测试范围

Android, iOS

PS: iOS SDK 在展示 cta banner 时有相关判断, 所以 iOS 目前没有这个黑屏的问题, 但从逻辑上来讲无论 SDK 有没有兜底, H5 都应该在 rv 播放完成之后, 不再尝试调用 rv 阶段的 cta banner, 所以这次的功能改动 iOS 和 Android 都需要测试

背景:

SDK 为了提高播放模板页(rv)的资源加载效率, 在 rv 切换到 endcard 之后, 并不会销毁 rv 的 webview 实例, 虽然 rv 的原生视频播放被停止, 但被隐藏的 rv 页的脚本逻辑依然是运行状态, 这其中就包括 "cta banner 自动展示" 的倒计时逻辑;

复现方式:

  1. 配置: 当 RewardSetting 接口中返回的 "interactive_type(cta banner 显示时间)" 大于 "video_skip_time(关闭按钮显示时间)" 时;

    示例:

    "video_interactive_type": 10,
    "video_skip_time": 5,
    
  2. 操作: 如果用户在 rv 的关闭按钮出现之后, cta banner 出现之前, 立即点击关闭按钮, 进入 endcard 页;

  3. 结果: 这时被隐藏的 rv 页中 cta banner 倒计时是依然存在的, 倒计时结束时无论当前是在 rv 还是 endcard 阶段, H5 都始终会调用原生的展示 cta banner 逻辑, 这时正在展示的 endcard 页就会被 cta banner 和一个全屏的黑色背景替换掉, 用户的直观感受就是 endcard 黑屏了并且底部展示了一个 banner

修复思路:

  1. 当用户点击关闭按钮关闭 rv 页, 在倒计时结束时, cta banner 始终会被阻止
  2. 当用户点击关闭按钮, 出现弹窗但选择继续播放, cta banner 会正常展示
  3. 当用户点击关闭按钮, 出现弹窗但这时用户不作任何后续操作, cta banner 依然会正常展示