关于 install/click

iOS 下 endcard 模板开启自动点击(alac=1 且 campaign.link_type 为 1)时,自动点击功能在调用 install 时会始终传递 campaign.needStorekit=1,此时可能会出现 storekit 加载失败然后 SDK 收到 install 但不执行跳转和上报

endcard 原有实现:
endcard 阶段点击触发 RewardJs/install 之后始终发送开发者点击回调

  1. 单 offer 下由 SDK 发开发者回调和上报等(type4 下虽然需要 H5 来给 click 的开发者回调,但目前二选一的实现是固定收到 type4 的 click 事件就给,只要 SDK type4 click 事件会排除 storekit 加载失败的情况,就不会有问题
  2. 但多 offer 下是否给开发者回调是由 H5 来做,所以在自动点击逻辑中需要 H5 根据 install 时 storekit 的加载状态来判断是否给回调,目前 H5 和 SDK 已经在 640 中修复了此问题,详见:http://jira.mobvista.com/browse/MTGHYB-769

现有实现(RewardPlus 大模板版本开始,也即 iOS 6.4.0):
增加了对一个特殊场景分支的处理,在 iOS 下 >= 6.4.0 且 needStorekit 为 1(alac=1&link_type=1) 时,不再始终发送开发者点击回调和 ad_tracking.click 上报,而是根据 install 时 SDK 返回的 storekit 的加载状态(skt_ready === true) 来判断,sk 加载失败时不再发送开发者回调

备注:iOS SDK 在 6.4.0 版本对 install 和 click 接口增加了调用回调,调用时如果入参 needStorekit 为 1,则调用回调中会返回 sk_ready 字段,用来标识 storekit 的加载状态(true 表示 sk 加载成功,false 加载失败),H5 根据返回的 code 和 sk_ready 判断是否需要发送开发者回调

2020/08/12

webviewFireEvent 在目标 webview 上触发事件时,iOS SDK 在 event.params 中传递的数据格式不同

webviewFireEvent({
  "unitId": "1234",
  "id":"10001",// 必填, 要触发事件的 webview id
  "data":{
    "eventName":"webviewshow", // 必填, 要触发的事件名, 如:webviewshow onJSBridgeConnect
    "eventData": {
      // 选填, 触发事件时要发送的数据
    }
  }
})

5.9.0 < ios < 6.4.0 时,传递给目标 webview 的 event.param 下会多一层 eventData:

event.param = {
    eventName: 'webviewshow',
    eventData: {
        // 调用 webviewFireEvent 时 eventData 中传入的数据
    }
}

ios >= 6.4.0 的版本移除了这层 eventData,和 Android 保持了一致,即:

event.param = {
        // 调用 webviewFireEvent 时 eventData 中传入的数据
}
2020/08/11

webviewLoad 接口,iOS 中传递的 campaigns 为空会导致 SDK 崩溃

调用 VideoBridge/webviewLoad 时,如果传入的 data.content.campaigns: [null, null] 中有空对象或者 null,就会导致 iOS SDK 崩溃

2020/08/04

createNativeEC 和 SDK 自有的兜底 endcard

  1. 主要区别是组件化的 NativeEC 在点击 install 时需要 H5 感知点击事件主动发送 install 回调
  2. SDK 自有兜底 endcard 不需要 H5 感知(待确认)
2020/08/04

react type6 时,没有提供 reward,导致 mopub iOS SDK 崩溃问题

此问题为第三方聚合平台问题,非 M SDK 自身问题,具体原因为:mopub iOS SDK 没有校验开发者回调中的 reward 信息是否存在便进行了取值和转换操作

Q:mopub 安卓 SDK reward 为空为什么没有问题?
A:安卓和 iOS SDK 的开发团队各自的实现不同,推测为 mopub 安卓 SDK 在操作 reward 时作了非空校验

示例代码:

var reactDeveloperType6Data = {"unitId":"146894","type":6,"hit":1,"data":{"campaign":{"ad_tracking":{"crur":[],"close":["https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=close"],"click":["https://adx-tk.rayjump.com/click?rid=cf4b7a4c-df60-48e8-af8d-12b3022121e7&impid=1&cid=13-346629955%2C320951595&crid=13-&spid=146892&pri=193.81&ch=10001&chrid=5eddf90d425c010e8672221x&chprit=0&chspid=146892&chplid=5731&dsp=13&exp=259200&bid=5eddf90d425c010e8672221x&dprin=193.81&dcid=346629955%2C320951595&dadid=346629955%2C320951595&adt=12&w=720&h=1280&tpid=1&appid=118692&appv=6.3.2&plf=2&dt=4&db=apple&dm=iphone+11+pro+max&nw=2&os=ios&osv=13.2&idfa=B86926FF-FA44-4B7E-BB47-79BF816416E8&ua=Mozilla%2F5.0+%28iPhone%3B+CPU+iPhone+OS+13_2+like+Mac+OS+X%29+AppleWebKit%2F605.1.15+%28KHTML%2C+like+Gecko%29+Mobile%2F15E148&ip=39.109.124.89&alg=MNormalAlphaModelRankerHH%3B150%3B0%3B0%3B100%3B0%3B0%3B0_nn_excalibur_lr6-1_nn_excalibur_lr6-2_rank_base-3_hb_rdb-4_ce_polaris_prerank&ext=dz8Edr512va55CwBMSPgsb13JVmMhxu38A20KlF7z%2BszoPWpGlbvxTOmomQ43kybYHaveOEQYftPZHUPV%2F5Tm63D8exq9UOSuER6ZBjy1JeL%2BRfn9ONQtxMAtGR7k03l3QZBuymHivIoIZhz1E6r3Db8RnkPz7zgFdaEi%2ByQXBkdpzqN%2FiUqX9BUe9GURowlGvegVxbX0LUvrmr%2FYVgfB706f6ORttWpMlYygNXDTTsW3BpPRLbC7fXH2QJfQmEegsqdteJHb%2BgFoZdul%2FrZ8EUDv41j%2F7g%2BpgkFZkFpcA%2BinvG%2F7sPyH44Kj36dTq2%2Bs69TNv83ZhYcobnBMJmfY2kIgy93ipSXgIIckPv1UEaL19aeCPlviccGBRmjlHeE%2Bqk5Ah0Y8lpCEkn9JlYeU%2BRYSSMVbqLA22yrGtaa1F%2F7I8aiJ8Dvg7QKRzMfFOLL4AawtWz8FTRlltb7&ts=1591605517&sdkvr=mi_6.3.2&hibid=0&btmpid=201&reqdsps=13&xalgo=8375300440876360592%04hb_rdb%040%040%04&rfecpm=0&respt=1&sip=172.31.30.38&ortd=2&af_token=[af_token]"],"ncru":[],"error":[],"plycmpt_track":[],"endcard_show":["https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=endcard_show"],"impression":[],"unmute":["https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=unmute"],"resume":[],"impression_t2":[],"play_percentage":[{"url":"https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=play_percentage&rate=0","rate":0},{"url":"https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=play_percentage&rate=100","rate":100},{"url":"https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=play_percentage&rate=25","rate":25},{"url":"https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=play_percentage&rate=50","rate":50},{"url":"https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=play_percentage&rate=75","rate":75}],"mute":["https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=mute"],"video_click":[],"pause":["https://sg01.rayjump.com/trackv2?z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&type=reward_video&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&key=pause"],"dropout_track":[]},"landing_type":"0","creative_id":"","c_ua":1,"reward_amount":0,"id":"320951595","image_url":"mtg-https://cdn-adn-https-baidu.rayjump.com/cdn-adn/v2/image/jpeg/5db506dee9c78.jpeg","ttc_ct2":1800,"video_resolution":"1080x1920","video_end_type":2,"reward_name":"","title":"Onnect – Pair Matching Puzzle","ad_html_path":"","expired":false,"rating":2,"notice_url":"https://sg01.rayjump.com/click?k=5eddf90da420f11ac8d5122y&z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&al=320951595%2C2020060816%2C0.36%2C0.005113%2C2.576768%2C1%2C1%2C0%2C0%2C3.34.193.130%2C0%2C2%2C0%2C3%2C1%2C904%2C404%2C102%2Cfix_creative_0605%2Ccrt%0418%041%0418%040%040%040%041%044%2C0%040%040%040%040%2C0%040%2C1%2Cpioneer-nothb%2C1%041.400000%041%041%041%2Cfr%040%040%2Ccr%041.840549%042.576768%2Cxx%2Cnull%040%040%040%040%040%040%040%041%2C1.93809%04346629955%2C86%04-1%041%2C-2%2Csl%2C1_18%2C2753492879%042771871390%040%2Cxx%2Cxx%2Cxx%2C0%2C-2%2Cfalse%2C1.84055%2C0.00511264%2CFR_BASE%2Cfalse%2Caws-se%04rs2_v1.11.40%2Ctrue%3B0%2C0%3B0%2C0&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&redirect=1&af_token=[af_token]","mraid_src":"/var/mobile/Containers/Data/Application/3E07621D-1EED-4F10-9895-50DEDAA4BBA5/Library/Caches/default/com.mintegral.cached.default.completed/(null)","video_size":4407741,"template":1,"guidelines":"","ad_source_id":1,"ttc_type":3,"ad_type":94,"video_url":"LdxThdi1WBKUH79wDkx/WktTJdSAWkztLkx2Wgzt4ku2Y+v/DFKwWFf3Y02tH79XJrlXiUvXiaRXiniXiavXiajXfnDAH7cUHavTH7jMH7xrf7VPiAtQfaNPfFVMHnjPfUV/Y+vT","nscpt":1,"desc":"Connect the images of animals, fruits,......","offer_type":0,"c_ct":3600,"link_type":1,"mof_template_url":"http://47.95.208.135/deploy-kk-dev-integration/m/Atmosphere-a55fb0f1bad34c84157b0a8706dbc640.zip?foldername=Atmosphere&md5filename=a55fb0f1bad34c84157b0a8706dbc640&wfr=1&to=9999&h5_debug_mode=1","ctype":1,"ttc":false,"ttc_ct":0,"placementId":"0319752.00","package_name":"id1387897651","adv_imp":[],"ia_rst":-1,"md5_file":"e570a64603f34a25d6453a51f6036f5b","ia_ori":0,"cam_tpl_url":"","click_mode":"6","watch_mile":30,"isPost":0,"storekit":0,"c_toi":2,"impression_url":"https://sg01.rayjump.com/impression?k=5eddf90da420f11ac8d5122y&z=MTI4eDEyOHxNTm9ybWFsQWxwaGFNb2RlbFJhbmtlckhIOzE1MDswOzA7MTAwOzA7MDswX25uX2V4Y2FsaWJ1cl9scjYtMV9ubl9leGNhbGlidXJfbHI2LTJfcmFua19iYXNlLTNfaGJfcmRiLTRfY2VfcG9sYXJpc19wcmVyYW5rfDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHwxfGFwcGxlfGlwaG9uZSAxMSBwcm8gbWF4fHwyLjB8fHwyMDF8MTM4Nzk4fDB8&q=a_i09M6dfgiaj%2FhrcPLg5whoPUYF2Ifk53H7DPi7xtfaRMHUjeDki9HaVeiUzP6a5QH7xrGnS3faR2DAvei7V9fUhBiURe4dM2fAie6ajeGaDPigMefaD9GnzIGnvA6aiBia32inVPf%2BMMWUiF6av%2FiAHID%2BJAhF56h7QXYr5QhgMb6jtW6oTe6ajA6acIinj9fU3B6aiPidMFWUi%2FigeXh75%2FD%2BSu6aSI6o2IiUSIidMeinlFGnzI6acIidMeiazI6aNMfdeIideuHa3FiADAiav2G%2BMB6aRbfAj9fAjAGnSIigeIi%2BMPiaxI6aSIideI6cs0io9Af0RsRUv%2FiAD0WoReR0M0iZzJ6aVTideIinvMibeIidMB6ds0DketDBR1iZM0DkeQDFHURUEeWozUL%2Bi0GUisRrxUYBR1iZM0Lk2M%2BF59D2KMLFh0G0RAicIBR0M0YkKrRUEeWozwJQKsRUE0h%2BjwhF5XJkM0WozXY7x6DFT0G0RFR0M0h7D0GUjsRgSr%2BFD0GUVsRgSr%2BFh0G0zrhr5e%2BFxQJrQ3%2BFj0WozMHQKERUEBWozMHQKTRUEe6%2BMeWU3T6ds0DFeThoR1inVsRrfsJdS6JdQMHZR1i0M0Y7h0GUjsRr2XH75s%2BbxPh7V0GUisRr2XHQKTH%2BtTYkK3RUEe6%2BMeiajMfUiPGnNF6acI4BzMJbD0GUjsRgHQJoR1i0M0JcKghrK2hoR1iZM0H%2Bf6LkN0G0RTRg2I6dM%3D&x=0&r=eyJnaWQiOiI3MjU2ZDk4NTgxN2YzOTQzYTY1OGI3MmZjZGYxNTUwMiIsInRwaWQiOjAsImNyYXQiOjgsImFkdl9jcmlkIjoxODAwMTQ3NTU0LCJpY2MiOjEsImdsaXN0IjoiNDAzLDI3NTM0OTI4NTEsMCx8NDA0LDI3NzAzODg1OTQsMCx8NDA1LDI3NTM0OTI4NTcsMTgwMDA1Mzc0Myx8NDA2LDI3NTM0OTI4NTQsMCx8MTA2LDI3NTM0OTI4NzksMTgwMDA1MzY3NCx8MjAxLDI3NzE4NzEzOTAsMTgwMDE0NzU1NCwxMDgweDE5MjB8NDAxLDI3Nzc3NDA1NjYsMCx8NDAyLDI3Nzc3NDA1NzEsNTIwLCIsInBpIjowLjAxLCJwbyI6MC4wMSwiZGNvIjowLCJjcl9uYW1lIjoiT04wMDNfMjgwMTIwXzMwc2VjXzl4MTZfTV8wMzUubXA0In0%3D&al=320951595%2C2020060816%2C0.36%2C0.005113%2C2.576768%2C1%2C1%2C0%2C0%2C3.34.193.130%2C0%2C2%2C0%2C3%2C1%2C904%2C404%2C102%2Cfix_creative_0605%2Ccrt%0418%041%0418%040%040%040%041%044%2C0%040%040%040%040%2C0%040%2C1%2Cpioneer-nothb%2C1%041.400000%041%041%041%2Cfr%040%040%2Ccr%041.840549%042.576768%2Cxx%2Cnull%040%040%040%040%040%040%040%041%2C1.93809%04346629955%2C86%04-1%041%2C-2%2Csl%2C1_18%2C2753492879%042771871390%040%2Cxx%2Cxx%2Cxx%2C0%2C-2%2Cfalse%2C1.84055%2C0.00511264%2CFR_BASE%2Cfalse%2Caws-se%04rs2_v1.11.40%2Ctrue%3B0%2C0%3B0%2C0&csp=inJIinh1iARMGnVefn32GUcIinvB6aSIinh1GUfIiUSIi%2BeORrfERUEeiavMiZM0HdfMLkN0GUjAWozULkN0G0RAfaDFiU3PfnVsiARMGnVefn32R0M0DkxwRUu%2FJkesWoz0HoR1R0RsRgSBLkfQ%2BFQ%2FRUEeGni%2FGavPiURAWozMhrQUH5KXJ%2BN0GUjPiB99ia3BiUisRrQA%2BFt0RUEMWozMhrQUH5KBD%2Bh0GUjPiB99ia3BiUisRgxt4oR1iZM0Hrc8HZR1iZM0D%2B5UJ7QXY0R1iZM0DkH6J7c9RUEeGni%2FGavPiURAWozMhrQUH5KBH0R1in3AWUlMGnRBiBM0hdzuDF56hrHTRUEeGni%2FGavPiURAWozMhrQUH5KBHgxtRUEeGni%2FGavPiURAWozrhdzuDFV0GUj%2FGni9ia3BWoztJdQMHZR1iZM0L7D0GUvsRgfQD2KMhrQUHZR1iZM0Db5Bhr5%2FDb30G0z5VTN06N%3D%3D&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,","adv_id":"903","ia_url":"","deep_link":"","click_url":"https://c.gdt.qq.com/gdt_mclick.fcg?viewid=!7bqNtGFJyZ1XUHvztFciMegikVqZsKi4vyOUg1v5yR00llX9Dw81sbOagEqfvjnnfWtNEOXoHTYPAKVy9UzDfYib!yqEang2pY9GHw9IdEsBM9TwB9ExyzvkmlRSmiwlfJ7I2_Q2MekA3jI_KjhT1eHpKOcymP8QkG2WQjWTMAfZltp171QLmrn_60AeMlqDMzBbggcngKkFBo_OdGfrGzsnFD9ucQqj1ysmIWwF68&jtype=0&i=1&os=1&acttype=0&s=%7B%22req_width%22%3A%22__REQ_WIDTH__%22%2C%22req_height%22%3A%22__REQ_HEIGHT__%22%2C%22width%22%3A%22__WIDTH__%22%2C%22height%22%3A%22__HEIGHT__%22%2C%22down_x%22%3A%22__DOWN_X__%22%2C%22down_y%22%3A%22__DOWN_Y__%22%2C%22up_x%22%3A%22__UP_X__%22%2C%22up_y%22%3A%22__UP_Y__%22%7D&xp=0&af_token=[af_token]","icon_url":"mtg-https://cdn-adn-https-baidu.rayjump.com/cdn-adn/v2/image/jpeg/5db506dee9c78.jpeg","fca":2,"ad_url_list":[],"mark":"","video_length":30,"imp_ua":1,"ready_rate":100,"fcb":2,"ctatext":"安装","adchoice":{"adchoice_size":"","adchoice_link":"","adv_name":"","platform_name":"","adchoice_icon":"","platform_logo":"","adv_logo":"","ad_logo_link":""},"rv":{"template_url":"http://47.95.208.135/deploy-kk-dev-integration/m/tpl1-9b03a1f2997a661175d4cbb11bd33408.zip?foldername=tpl1&md5filename=9b03a1f2997a661175d4cbb11bd33408&wfr=1&to=9999","paused_url":"https://hybird.rayjump.com/rv-zip-2019/1127/mini-16af5baa8cf946a773ff5d49d1e12563.zip?md5filename=16af5baa8cf946a773ff5d49d1e12563&foldername=mini","image":{"idcd_img":["http://47.95.208.135/assets/Elpsycongroo.gif"]},"video_template":0,"orientation":0},"pv_urls":["https://adx-tk.rayjump.com/imp?rid=cf4b7a4c-df60-48e8-af8d-12b3022121e7&impid=1&cid=13-346629955%2C320951595&crid=13-&spid=146892&pri=193.81&ch=10001&chrid=5eddf90d425c010e8672221x&chprit=0&chspid=146892&chplid=5731&dsp=13&exp=259200&bid=5eddf90d425c010e8672221x&dprin=193.81&dcid=346629955%2C320951595&dadid=346629955%2C320951595&adt=12&w=720&h=1280&tpid=1&appid=118692&appv=6.3.2&plf=2&dt=4&db=apple&dm=iphone+11+pro+max&nw=2&os=ios&osv=13.2&idfa=B86926FF-FA44-4B7E-BB47-79BF816416E8&ua=Mozilla%2F5.0+%28iPhone%3B+CPU+iPhone+OS+13_2+like+Mac+OS+X%29+AppleWebKit%2F605.1.15+%28KHTML%2C+like+Gecko%29+Mobile%2F15E148&ip=39.109.124.89&alg=MNormalAlphaModelRankerHH%3B150%3B0%3B0%3B100%3B0%3B0%3B0_nn_excalibur_lr6-1_nn_excalibur_lr6-2_rank_base-3_hb_rdb-4_ce_polaris_prerank&ext=dz8Edr512va55CwBMSPgsb13JVmMhxu38A20KlF7z%2BszoPWpGlbvxTOmomQ43kybYHaveOEQYftPZHUPV%2F5Tm63D8exq9UOSuER6ZBjy1JeL%2BRfn9ONQtxMAtGR7k03l3QZBuymHivIoIZhz1E6r3Db8RnkPz7zgFdaEi%2ByQXBkdpzqN%2FiUqX9BUe9GURowlGvegVxbX0LUvrmr%2FYVgfB706f6ORttWpMlYygNXDTTsW3BpPRLbC7fXH2QJfQmEegsqdteJHb%2BgFoZdul%2FrZ8EUDv41j%2F7g%2BpgkFZkFpcA%2BinvG%2F7sPyH44Kj36dTq2%2Bs69TNv83ZhYcobnBMJmfY2kIgy93ipSXgIIckPv1UEaL19aeCPlviccGBRmjlHeE%2Bqk5Ah0Y8lpCEkn9JlYeU%2BRYSSMVbqLA22yrGtaa1F%2F7I8aiJ8Dvg7QKRzMfFOLL4AawtWz8FTRlltb7&ts=1591605517&opri=NWVkZGY5MGRiZmViNzkwYyQULQ6K7WIlTdArbw==&sdkvr=mi_6.3.2&hibid=0&btmpid=201&reqdsps=13&xalgo=8375300440876360592%04hb_rdb%040%040%04&rfecpm=0&respt=1&sip=172.31.30.38&ortd=2&mode=0"],"timestamp":1596349546224.6199,"hb":false,"playable_ads_without_video":1,"app_size":"230","html_url":"","image_size":"128x128","storekit_time":2,"ext_data":{"slot_id":1},"gif_url":"","ia_icon":"","mof_tplid":"201","t_imp":0,"isReady":true,"video_url_decode":"https://cdn-adn-https-baidu.rayjump.com/cdn-adn/vh/20/02/13/00/01/563dacd04da0ddf4e938e4497e0e1965.mp4","only_impression_url":"https://sg01.rayjump.com/onlyImpression?k=5eddf90d425c010e8672221x7&p=NTczMXwxMTg2OTJ8MTQ2ODkyfDB8MHx8b3BlbmFwaXx8MTI4eDEyOHw3fHx8fHx8fEhLfHx8fGF3c3NlX3Bpb25lZXJ8fE1Ob3JtYWxBbHBoYU1vZGVsUmFua2VySEg7MTUwOzA7MDsxMDA7MDswOzBfbm5fZXhjYWxpYnVyX2xyNi0xX25uX2V4Y2FsaWJ1cl9scjYtMl9yYW5rX2Jhc2UtM19oYl9yZGItNF9jZV9wb2xhcmlzX3ByZXJhbmt8NWVkZGY5MGQ0MjVjMDEwZTg2NzIyMjF4fDVlZGRmOTBkNDI1YzAxMGU4NjcyMjIxeHx8MjB8MHxNb3ppbGxhJTJGNS4wJTIwJTI4aVBob25lJTNCJTIwQ1BVJTIwaVBob25lJTIwT1MlMjAxM18yJTIwbGlrZSUyME1hYyUyME9TJTIwWCUyOSUyMEFwcGxlV2ViS2l0JTJGNjA1LjEuMTUlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjE1RTE0OHx8NWVkZGY5MGQ0MjVjMDEwZTg2NzIyMjF4fHx8fHwxNS4xNjQuMjE5Ljc3fHx8fHx8Ni4zLjJ8fHx8fHwzOTB8MXwxMTg2OTJ8MXw5fHx8fFtbIjM0NjYyOTk1NSIsIjkwMyIsIjAiLCIwIiwiMSIsIjEiLCI1ZWRkZjkwZGE0MjBmMTFhYzhkNTEyMXkiLCIiXSxbIjMyMDk1MTU5NSIsIjkwMyIsIjAiLCIwIiwiMSIsIjEiLCI1ZWRkZjkwZGE0MjBmMTFhYzhkNTEyMnkiLCIiXV18fDB8fHx8aWQ5NjM2MzAwNTl8fDEwMnx8NHwwfHxpZDk2MzYzMDA1OXwwfHx8fDB8OTA0fHx8fHx8fDB8fHx8fHwwfHx8fDB8fHx8fHx8fHx8fHxhcHBsZXxpcGhvbmUgMTEgcHJvIG1heHx7Im1vZl91aWQiOjE0Njg5MywiZXhjX3BrZyI6IjBfMSIsImV4Y19wc2JfcGtnIjoicHNiX0JfMSJ9fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8MzQ2NjI5OTU1OjI3NzY2MzU1MjUsMjc3NjYzNTU3OSwwLDkwNCw0MDQsMCwwOzMyMDk1MTU5NToyNzUzNDkyODc5LDI3NzE4NzEzOTAsMCw5MDQsNDA0LDEsMHwyMDF8fHwxMzg3OTh8fHx8fHx8fHw%3D&csp=inJIidMeiazIidMefAE1i%2BMBidMe6ds0DFl0GUjMiaveWoz3hbSuHoR1inisRrfuHoR1RUiTfUDBGn32fZMAiUvPfnj2GnV0WoztH7T0GrP2Y7MsRrz3RUE0R0M0hdzuDF56Lk90GUjPiB99ia3BiUisRgSBLkfQ%2BFK2JoR1in3AWUlMGnRBiBM0L%2Bf6L7R0GUvsRgSBLkfQ%2BbztJBR1in3AWUlMGnRBiBM0J7c9RUEeWozrDkwQRUEeWoztJkfTLkK%2FRUEeWoztHQKTD%2Bl0GUjPiB99ia3BiUisRgSBLkfQ%2BbzrRUEeGni%2FGavPiURAWozMhrQUH5KBHgN0GUjPiB99ia3BiUisRgSBLkfQ%2BbzrJ7j0GUjPiB99ia3BiUisRrHMhrQUHZR1iZ9PiAlMGnRsRrcT4%2BSQRUEeWozEH0R1ioM0hF5U%2BbSBLkfQRUEeWozUJ%2BzBHkPU4ZR1RQ5nxozK&c=94%7C2%7C11.1.1%7CMI_6.3.4%7CiPad4,4%7C1536.000000x2048.000000%7C1%7Czh-Hans-CN%7C9%7C%7C%7C%7C%7C%7CA52E1246-7A2F-4DCB-AD1A-58D763C81BA6%7C%7C,%7C0e0ca5a7-6249-5cc2-a345-e94609777033,&rs=","endcard_url":"http://47.95.208.135/rv-zip-2020/0728/3like.v4-c2bdd16383c338af70ad15ec8b0ad1d9.zip?md5filename=c2bdd16383c338af70ad15ec8b0ad1d9&foldername=3like.v4&alac=0&alecfc=0&mof=1&mof_uid=146893&ec_id=404&rv_tid=402&tplgp=1&v_fmd5=76cf4ed347e979dcbcba4e1182cd5b02&i_fmd5=413798b4e1dc3cd28fd28db074cff6c7&mcc=&mnc=&n_imp=1&mof_textmod=1&clsad=1&tua=1","end_screen_url":"https://hybird.rayjump.com/rv/endscreen.v7.html?mof=1","nv_t2":0},"convert":1,"expired":false}}

WindVane.call('VideoBridge', 'reactDeveloper', reactDeveloperType6Data, function (res) {
    console.log('VideoBridge - reactDeveloper - success', res)
}, function (e) {
    console.error('VideoBridge - reactDeveloper - error', e)
})
2020/07/29

安卓 RewardPlus 版本移除了 addReward上报

需要 H5 从此版本开始,对安卓不再屏蔽 addReward 上报

2020/07/27

type4 必须 webviewshow 之后才可以进行 append 之类的挂载操作

2020/07/24

triggerCloseBtn 后发广播,导致开发者webview 被冻结

神奇冻结问题的规避办法

  1. 先调用广播“MTG_TriggerCloseBtn”再调用 API triggerCloseBtn 是ok的
  2. 在 “先调用 triggerCloseBtn 后发广播”的逻辑下,如果进入 pl 后,打开chrome终端不输入内容,点击 pl 关闭也是可以的

引用 Android 侧的通报邮件:

Hi,见安。
因近日客诉在展示Mintegral RV后会造成宿主App的WebView不响应(以下统称上述行为),现就整个排查过程及结果作出说明。

1.客诉后发现,出现上述行为时,RV的展示流程为Video+Playable(以下统称PL)。
2.当EndCard(以下统称EC)为native兜底及H5时,不会造成上述行为。
3.关闭PL,PL调用SDK的关闭方法后,SDK对加载PL的WebView进行销毁,SDK在执行销毁动作后实际已失去对WebView的控制能力。当出现造成宿主WebView不响应现象时,被销毁的PL WebView输出了Log,内容是大模板下发送关闭广播操作。
4.在跟PL的同学联调后发现,将相关发送广播的代码去掉后,宿主App的WebView行为正常。
5.跟EC的同学确认,EC会对是否是大模板做出判定,RV单Offer展示状态下不会有发送广播行为。
6.测试的同学在测试先播后选模板后确认,发送广播行为在先播后选模板下不会造成上述行为的发生。

昨日晚些时候,PL的同学已经对上述问题进行了调整,目前测试宿主App WebView行为已正常,后续还需进行持续观察。

同时由于Android WebView相关机制及不可控性,当WebView执行完Destroy操作之后,如果H5仍有任务执行,被销毁的WebView会一直等候结果直到任务完成,如果任务耗时/需要回调/没有中断机制等等,其它WebView也会跟着一起等待,最终会造成宿主App的WebView不响应任何操作,直到应用重启。建议后续关闭时提前做必要的工作,处理完毕后再通知SDK进行关闭操作,以减少此类意外发生。

SDK端也会持续关注WebView控件的相关改进,如后续Google对此类型问题做出改进亦会同步。

由于前期对遇到此问题的开发者进行了下毒处理,后续麻烦AM及对接同学尝试放开限制,并跟踪开发者是否还会遇到同类型问题。

以上。

PS:非常感谢PL的同学的支持与帮助,对排查过程中提供帮助的同学表示感谢。

2020/07/24

iOS 4.0.0 webviewshow 时调用 init/getEndScreenInfo 会导致 SDK 崩溃

iOS < 4.6.0 的版本,H5 在 “视频播放阶段”调用 VideoBridge/init 或 RewardJs/getEndScreenInfo 时 SDK 会直接崩溃

原因:历史版本的 SDK 在以上接口被调用时会检测 campaign 是否存在,如果不存在则会走预期的逻辑,但在 webviewshow 时 campaign 似乎被赋值了,所以走了预期之外的逻辑,这个问题已经在 4.6.0 版本修复

2020/07/21

SDK 双端 reportUrls 问题

对于 reportUrls API

  • iOS 根据文档记录从 5.6.0 banner 版本开始支持
  • Android 虽然是从大模板的版本 12.2.0 开始支持,但只支持大模板和 type1 组件,type4 和单 offer 场景不支持 VideoBridge/reportUrls,reportUrls 方案在安卓播放模板上走不通
2020/07/17

SDK 老版本壳

2020/07/13

安卓 10240 问题

10240 的问题线索(测试机型 MIX2)

两个 offer,offer1 点击正常,offer2 点击没有反应,然后我看了下 campaign 过滤后传给 install 的数据长度:

  • offer1 的长度是 9870,点击可以正常跳转

  • offer2 的长度是 10327,点击没有正常跳转,应该是超过了 10240。。。

  • 同样的 offer2,我安装一个 9.13.1(非组件化版本)让 offer2走单 offer,却可以在 endcard 正常触发 install(老版本单 offer 场景中 offer2 的传递长度有略微缩小,10290)

  • 在组件化大模板逻辑中,将 offer2 和 offer1 互换,offer2 install 时传递的campaign 长度发生了变化(10327 缩小到 10301),结果,互换位置的 offer2 依然无法触发 install

2020/07/13

iOS 侧大模板版本问题

6.3.0 之前的SDK,这里有个bug,就是组件化创建一个web的时候,如果没wfr=1,也会等isready才会给h5发webviewloaded事件;

因为之前load成功的条件 都不依赖ec,所以一直对线上的大模板没影响

现在load成功,你们是依赖了这个ec url就暴露出来了,
ios在630版本修复这个问题了,所以qa测的时候,630以后的版本正常

2020/07/01

安卓和 iOS - getFileInfo 接口的差异

双端差异

  1. iOS 会查询本地文件,如果下载的文件不存在就返回 downloaded 0,如果存在就会返回 downloaded 1
  2. 安卓目前自测:只要视频下载过,即使删除了本地文件, downloaded 标识也是始终为 1 的

为什么之前二选一没有问题?

  1. ,之前二选一用的是 type4 组件,安卓侧的逻辑是:如果本地视频被干掉,则会请求实时 video_url,通过 charles 抓包可以发现,删除本地 video 之后再 show 会再看到一次完整的视频下载
  2. iOS 侧和笑影沟通的是,如果本地视频被干掉,iOS 是不会走实时 video_url 的
2020/07/01

Android load 相关备忘

2020/06/22

【线上】TODO(非问题)

  1. SDK (iOS & Android)在 H5 扣回调的时候(具体是 H5 扣回调还是通过 type1 创建的所有 webview 待确认),install 不会给开发者点击回调(依然会报 notice_url 和 click_url),需要 H5 补发
  2. iOS SDK 目前的大模板版本在 H5 扣回调的时候就不走自己的 ccbp 逻辑了,之后需要H5 补上这个 ccbp 逻辑,安卓端待再次确认
2020/06/18

【线上】 iOS SDK unitSetting 目前存在一直读取内存中兜底 setting,而不读取服务端 setting 的问题

正常情况:
首次安装第一次 load show 时,SDK 会在从服务端下载 setting 到本地之前,先使用 SDK 自己兜底的 setting 配置(所以涉及 setting 相关的 case 不能看第一次 load show 的结果)

新版 iOS SDK setting 读取逻辑更新后:
【已确认,必现】:首次安装无论第一次还是第 N 次只要程序没有重启,就会一直使用内存中的兜底 setting
【部分设备必现】:部分设备重启之后依然会走兜底的 setting,导致服务端返回的 setting 一直无法生效

2020/06/18

如何避免

思考:如何避免后续 SDK 提供的新老接口产生更多类似的问题,应用 SDK 或 H5 侧的单元测试和黑盒

TODO:问题归类,问题类型累计占比,问题类型增长占比
a 新增接口各端能力可能不符合预期
b 历史接口在更新过程中,行为发生了预期之外的变化

2020/06/16

【线下】 Android 下,H5 通过 type1 创建的子视图无法向 SDK 创建的大模板视图发送广播

2020/06/15

【线下】iOS closeAd 偶现失效导致无法关闭广告的问题

2020/06/15

【线下】reactDeveloper dismissed (type6)时双端的差异

场景:

RV 或 IV 下调用 SDK API: reactDeveloper type=6 (dismissed)

差异表现:

iOS 下调用 reactDeveloper dismissed 时只会给开发者 dismissed 回调,并不会调用 closeAd
安卓下调用 reactDeveloper dismissed 时除了给开发者 dismissed 回调,安卓自己还会额外调用 closeAd,这两个操作在安卓下是绑定的

2020/06/12

【线上】组件化版本 SDK 奖励回调相关问题(reactDeveloper)

修复记录:http://confluence.mobvista.com/pages/viewpage.action?pageId=38568855
API 参考:http://confluence.mobvista.com/pages/viewpage.action?pageId=30346508

大模板逻辑下已知的 Android 奖励回调问题

问题原因:
Android 二选一目前在最后关闭广告时给 H5 的关闭事件中没有传递奖励回调(Android 是在 playComplete 阶段给的 convert),按照约定 H5 目前是在 onCloseBtnClicked 事件中将 SDK 传递的 data 透传给 SDK(其中包括奖励相关信息),所以按照当前逻辑,安卓 SDK 在回调开发者 dismissed 时拿到的 convert 为空(即用户不能获得奖励),不符合预期
修复方案:
目前的方案是针对安卓特定版本区间,保存 SDK 在 playComplete 阶段提供的 convert 和 reward 信息,在最终关闭时将 convert 相关信息传递给 SDK,此修复方案已经和 SDK 侧确认

大模板逻辑下已知的 iOS SDK 奖励回调的问题

问题原因:
当最后关闭广告应该给用户奖励的时候,SDK 会给 convert=1;当不该给奖励的时候,iOS SDK 给 H5 的 convert 是 2,这个阶段没有问题
但 H5 之后透传给 SDK 的时候,由于 SDK 是直接将 convert 值转换为布尔类型,所以 SDK 会将 convert=2 不给奖励的情况也认为是 true,最终回调开发者给了用户奖励
修复方案:
H5 需要在 iOS >=590 且 < 630的版本中,把 2 转为 0,传给 SDK,这样就可以确保奖励逻辑的正确性,iOS >=630 的版本会修复这个问题,H5 这种情况下透传即可

2020/06/11

【线下】iOS 对 destroyComponent 的支持有问题,安卓暂未验证

iOS 下 destroyComponent 时会不仅会 destroy 当前指定的实例和所有子实例,还会额外 destroy 掉当前实例的父级实例

安卓端暂未验证

2020/06/10

【线上】adn 在 v3 接口返回的 pv_urls 字段中可能包含特殊字符 \u0326

会导致 H5 调用 iOS 端 reportUrls 接口时,无法上报 pv_urls

QA 辛停反馈目前为偶现,暂时无法复现,已告知 adn 贵雄,但无法复现的话,排查此问题会比较困难

2020/06/10

【线下】组件化版本中安卓端不支持 webviewFIreEvent

导致 H5 无法正常对指定 webview 组件触发自定义事件(如 webviewshow)

iOS 侧没有问题,安卓侧 12.2.0 - ? 版本不支持 webviewFireEvent

2020/06/10

【线下】iOS sdk 在某个版本移除了对 ad_tracking.start 1/4 1/2 3/4 complete 的支持

并且在 VideoBridge init 时不会给 H5 返回这些字段,所以 H5 目前在 iOS 上无法做相关的业务上报(start 1/4 1/2 3/4 complete)

2020/06/09

【线上】sdk 在 631 632 webviewshow 时没有给 reward 信息

影响:show 时拿不到 reward 信息,会导致最后关闭 “给开发者回调” 和 “addRewardToServer”时无法带上奖励信息,但是否有奖励(convert)不受影响
原因: SDK 排查中

2020/06/08

[线下] 安卓 rv.image.idcd_img 不支持 gif 动图

开发诱导点击模板时遇到的安卓不支持 gif 动图的问题

解决办法

通过给 img 的 src 增加一个时间戳不再使用本地缓存可以解决这个问题

原因

Android SDK 通过拦截器 (WebViewClient.shouldInterceptRequest) 实现了一个图片等资源预缓存机制, 在缓存线上图片资源的时候没有对 gif 特殊处理, 只返回了第一帧

2019/09/19

[线下] iOS rv 不支持透传自定义字段

开发 EC 诱导点击模板时发现的 SDK 兼容问题, 2019-09-16 晚上自测的时候发现 iOS 不支持 rv 下传递 idcd_image 字段, 但安卓是支持的

第二天和何瑞讨论以及验证之后确认 iOS 不支持 idcd_image 字段透传, 但是可以通过和 rv 字段同级的 ia_ext1 或者 ia_ext2 传递, 但安卓却不支持 ia_ext1 和 ia_ext2 这两个字段的透传

安卓支持 ad.rv.idcd_img, iOS 支持类似 ad.ia_ext1.idcd_img/ad.ia_ext2.idcd_img 这样的形式

最终方案:
每个 campaign 的 rv.image 属性是一个 json 对象,通过 campaignList[0].rv.image.idcd_img[0] 即可访问到服务端下发的诱导点击素材

2019/09/17

[线下] iOS 8.x webviewshow 多次触发的问题

问题描述

iOS 8 中, 通过 iframe 加载的推啊组件会额外触发 SDK 的 loadFinish 事件, 导致 webviewshow 被多次触发

影响程度

iOS8.0 根据之前找刘杰跑的日活数据, 大概 PV 在 11.6w, 整体占比 0.31%

解决方案

  1. 在 endcard 中控制 webviewshow 事件的触发, 确保每次页面加载的生命周期中, 只触发一次(需要确认负面影响)
  2. 针对每个 webviewshow 中的组件兼容多次调用多次触发
2019/09/09

[线上][M-pixel] 安卓 webview 内跳不支持 localStorage

背景

HOJO 口红客户线上数据异常, 1500 左右的 click, 但是网站记录的 content_view 却只有 60-70 个, 经过排查, 发现 Android webview 内部跳转场景无法上报埋点, 而这次投放又只投放了 Android

经过和 SDK 小伙伴的确认, 了解到安卓在初始化内部跳转的 webview 时只开启了 JavaScript 和浏览器缓存, 其他特性都没有开启, 包括用于开启 localStorage 的 setDOMStorageEnabled(true)

兼容外部浏览器和 webview 的数据持久化方案

https://gist.github.com/klovelovely/c635639bda777c8e14dcc6dcc9bd8d22

一个兼容方案, 对不支持 localStorage 的 Android webview 内跳场景使用 cookie 存储, 默认优先使用 localStorage

具体原因:

  1. iOS >= 10 下 Safari 存储 cookie 时, path=/ 无效 (始终会以当前 url 路径存储), 导致不同的父级路径无法读取 cookie
  2. Android webview 默认不支持 localStorage, 需要显式声明: wv.getSettings().setDomStorageEnabled(true);

Android SDK 创建内部跳转的 webview 时的逻辑

Android SDK 创建 RV 和 EC 的 webview 时的逻辑

2019/08/07

[线上][全模板] H5 补发 adtracking

@姚舜

针对安卓, adn 将 click_url base64, 然后安卓会根据包名做跳转, H5 64解码 click_url 之后帮安卓代发一次 adtracking

2019/07/24

[adn] 在线 url 的线上请求比例分布

EC more offer 上线 "批量imp" 功能时 adn 只配置了 endcard_url(n_imp=1), 没有处理 end_screen_url(url 上没有 n_imp 参数), 通过折线图可以发现:

end_screen_url 从早上 9 点到晚上 9 点之间的流量还是非常多的

2019/07/24

[线上] IOS SDK H5 adtracking.impreesion 补发需求

最终通过 iOS 播放视频进度上报的机制来解决

iOS 在播放视频时

[
{r:0, url: '000000'}
// 服务端可以再这里多加几个 0 秒上报配置, 如:
// {r:0, url: 'aaaaaa'}
// {r:0, url: 'bbbbbb'}
// iOS 也是会做额外请求的
{r:25, url: '252525'}
]

2019/07/17

[线上] Android endcard 不出关闭按钮(必现)(混淆导致)

TL;DR
gradle 版本过高 混淆导致

混淆导致不出关闭按钮问题(必现)的特点:

  1. 不出关闭按钮的情况是必现的
  2. RewardJs 相关方法调用全部失效, VideoBridge 不受影响

2019/07/17

[线上] 安卓小于 9.3.0 点击安装时 campaign 缓存问题

安卓 930 以下, click install 会始终使用自己缓存的 campaign 信息, 而不关心 RewardJs install 方法传进来的 campaign 是什么

所以会导致 rv/iv 场景下, 除了 SDK 已经缓存的主 offer, 其他任何的 offer 信息都无法在 install 时传递过去, 包括

  1. more offer: 猜你喜欢
  2. more offer: 关闭场景弹窗
2019/07/12

[线上] Android endcard 不出关闭按钮(偶现)

初步确认为 setTimeout 在部分情况下不生效导致的问题

https://www.jianshu.com/p/fd61e8f4049e


问题背景

目前我们已经基本定位了安卓偶现不出关闭按钮的原因,是因为H5调用定时器在低端系统中存在问题,导致无法展示。
建议我们临时先针对安卓环境,默认直接展示关闭按钮(不遵循setting默认延迟1秒的控制),以缓解该问题。后续再调研技术上优化的可能性。

原因

setTimeout 在 android webview 中偶尔无法被成功调用, 而且一旦无法成功调用, 则在结束程序之前, 这个 webview 中的 setTimeout 会一直处于无法调用的状态

影响范围

Android 平台所有系统版本, 所有 SDK 版本, 所有 endcard 模板都有几率出现这个问题

解决办法

临时: 针对 Android 不再设置 timeout 定时器, 直接展示

feature-close-button:
git reset v2.2.5
git push origin HEAD --force

master:
git checkout master
git reset --hard feature-close-button
git push -f origin master
// H5 的 setTimeout 在 android 中存在偶尔无法被调用的问题(不出关闭按钮)
// 所以这里临时先针对安卓,默认直接展示关闭按钮(不遵循setting默认延迟1秒的控制),以缓解该问题
if (util.device().isAndroid) {
  app.toggleCloseBtn()
  return
}

长期:

2019/06/12

H5 模板开发测试上线流程问题梳理 [M SDK]

问题列表 问题原因 备注
[线上] "猜你喜欢" ctr 下降问题 低版本 SDK 兼容的问题 没有线上 top N SDK 和 系统版本的参考, 导致开发和测试时没有主要关注的机型和系统版本
[线上] cta banner 倒计时时间过长导致 endcard 黑屏问题 cta倒计时晚于 rv 关闭按钮倒计时的情况下, 用户在 cta 倒计时结束前点击 rv 关闭进入 endcard 会导致 endcard 被黑屏和底部cta banner 覆盖 H5 应该在endcard 阶段不再调用 cta banner 但是没有; SDK 应该在 endcard 阶段阻止 cta banner 的调用请求
[线上] 部分低版本系统机型 3like.v1 白屏 loading 的问题
[线上] Android 播放模板3 没有播放视频
[线上] SDK 8.5.7 3like.v4 不出关闭按钮问题 低版本 SDK 兼容的问题
[未解决] 开发者集成SDK灰度时webview导致的崩溃率过高问题 暂未定位 (webview 或 H5 WindVane 库的 onSuccess) 暂时通过 template_url 下毒的方式, 初步解决问题
[未解决] endcard 空白问题 - 没有任何文字内容, 但有基础按钮布局样式 可能是开发者集成中遇到的问题 开发者已经决定自行解决, 后续没有反馈
视频播放方向混乱问题 三期召回模板逻辑 + SDK 处理方式一起构成的问题 iOS 上的问题可以通过 H5 发版修复, Android 需要自己修复
cdn 资源在 SDK 中的跨域问题 已解决, 但暂未定位到根本原因
Android ANR 问题 Android webview 版本更新导致的问题
CSS3 模糊效果导致模板黑屏问题 iOS 对 webview 的内存限制

iOS 和 Android SDK 之间的差异

[iOS Android SDK 行为区别]

2019/05/21

[线上] "猜你喜欢" ctr 下降问题

背景

5 月 16 日针对猜你喜欢增加了定向参数的上报之后,

endcard 上线记录

git tag zip 配置时间 是否有 model 上报 ctr 是否明显下降 备注
v2.2.2 5 月 10 日 没有 没有 稳定版
v2.2.3 5 月 16 日 ctr 下降 回滚后确认有 SDK 兼容问题
v2.2.4 5 月 21 日 ctr 下降 修复 SDK 兼容, 上线依然有 ctr 下降问题, 回滚
v2.2.5 5 月 24 日 没有 没有 初步怀疑是 model 上报引起召回 offer 列表变化导致的 (只提测了 zip 包, 没有提测在线 url)
v2.2.6 5 月 30 日 没有
(但上报了 exclude_ids)
ctr 下降 mof_ab - 此次上线出现了一定程度的 ctr 下降, 由于直接上报了 exclude_ids, 并增加了 h5_type 和 mof_ver 的变数, 所以
v2.2.7 6 月 5 日 没有 ctr 下降 组件化第一版 - 和 ec 的 ctr 下降表现不同, 组件化上线后 offer 维度的 ctr 有升有降
v2.2.8 6 月 11 日 没有 ctr 下降 组件化第二版 - appwall 上报逻辑保持与之前的 v2.2.2 一致 (上报参数, init 时机提前)
2019/05/20

[线上] Android 播放模板3 没有播放视频

我理解 rv 播放模板线上一般都会配置成 "不出关闭按钮", 然后在视频播放完成的时候自动跳 endcard

稍微整理了一下思路:
这个用户反馈的截图我理解应该是某种原因导致用户播放视频失败, 或者视频层被webview层盖住了

  1. 如果是视频播放失败, 那么用户这边应该始终不会跳转到endcard阶段("出关闭按钮" 和 "跳 endcard" 的这 2 个逻辑依赖视频播放)
  2. 如果只是视频层被盖住, 那么在视频播放完成(一般30秒)之后, 应该会自动跳转到endcard

所以这里出现了第一个问题: 我们是否可以知道, 这个遇到问题的用户, 遇到的是以上哪种情况?

视频播放失败

视频播放失败的情况我们播放模板其实是有一个统一的处理逻辑的(-1缓冲中, 0开始播放, 1播放完成, 2播放失败), 遇到 2 播放失败的话, H5 这边是会直接调用 SDK 展示关闭按钮的, 原因我想到的有以下几种

  1. H5 和 SDK 原因: 遇到了 "-1,0,1,2" 之外, 其他播放失败的情况, 最终结果是 "原生视频区域为白屏, 而且没有出关闭按钮"
  2. 用户机型原因: 比如不支持某种视频解码格式, 导致播放失败
    这里有第二个问题: SDK如果遇到播放视频编码解码失败之类的情况会怎么处理呢, 是通过fireEvent('onVideoStatusNotify') 返回 2 吗?

视频层被盖住

这个

2019/05/11

[线上] 部分低版本系统机型 3like.v1 白屏 loading 的问题

原因:

  1. 3like.v1 所在项目当时没有引入 babel, 无法转译 es6 代码
  2. 3like.v4 根据 close_button_delay 显示关闭按钮的新逻辑包含了 es6 代码

在将 3like.v4 相关功能移植到 3like.v1 时没有对这种情况做处理, 导致部分不支持 es6 语法的机型在展示 endcard 时出现语法错误, 最终表现为 endcard 阶段 loading 白屏

影响范围估计:
ios <= 8 的市场占有率, 初步估计全球大概在 0.17%, 中国 0.23%
Android <= 4.4.4 以下的占有率全球 0.67%, 中国4.28%(包含4.4.4的1.89%, 4.4以下的2.39%)

自有流量日活统计:

2019/05/07

[SDK 兼容] SDK API 参考

iOS

< 490 的 SDK, 不支持通过 VideoBridge openURL 打开外部浏览器
< 390 的 SDK, 获取 ad_type 有问题

Android

< 960 的 SDK, 不支持通过 VideoBridge openURL 打开外部浏览器
< 930 的 SDK, 在被调用 install 时会始终使用自己缓存的主 campaign 信息, 而不关心 install 传递进来的 campaign
< 870 的 SDK, endcard_url 加载时会抛弃 ? 后的所有传参

其他细节

  1. Android SDK 中 RewardJs getEndScreenInfo 和 VideoBridge init 返回值不一致的问题

    • RewardJs getEndScreenInfo 中没有 device 信息, 但是在根节点有 sdk_info 返回;
    • VideoBridge init 中包含了 device, 但是没有 sdk_info

    Android-RewardJs-vs-VideoBridge
    iOS-RewardJs-vs-VideoBridge

  2. RewardJs 支持 toggleCloseBtn, 但 VideoBridge 不支持 toggleCloseBtn

2019/05/05

iOS Android SDK 行为区别

  1. 在 "视频播放方向混乱问题" 问题上, 都出现了问题, 但问题原因并不相同, 且 iOS 已经通过 H5 tpl1 模板发包修复, Android 暂时只能靠 SDK 自身发版来修复这个问题
  2. SDK 返回的 device_widthdevice_height 不一致的问题, iOS 返回的是没有乘以 scale ratio 的值(即真实的设备像素宽), Android 返回的是已经乘以 ratio 之后的,假设 ratio 为 2, iOS 返回 320 640, 则 Android 会返回 640 1280,所以在处理点击坐标上报的逻辑中,会有类似以下针对 iOS 的处理逻辑:

    if (util.device().isiOS) {
      device_width = _data.device.device_width * _scale;
    device_height = _data.device.device_height * _scale;
    }
  3. Android 参数过长被截断的问题 - 在向 Native 发送消息时, WindVane 库本身, 会针对 iOS 使用iframe, 而在 Android 中使用 window.prompt, 初步怀疑是 Prompt 本身对入参有长度限制,导致传递的参数过长时,会在 Android 中被截断出现问题,所以在 install 传递 campaign 相关信息之前,会有类似以下针对 Android 的处理逻辑:

    if (util.device().isAndroid) {
        _params = util.getParams2Native(_params);
    }
  4. Android rv/endcard 模板在模板加载之后支持横竖屏互相旋转; 但 iOS 不支持, 模板加载后方向便会固定, 用户无法通过横竖放置设备使之旋转

2019/04/29

[开发者灰度][未解决] 开发者集成SDK灰度时webview导致的崩溃率过高问题

进度: Android 端排查中 @海霞

某个开发者在灰度发布时出现了 2.5% 的崩溃率, 大概100-200次,初步定位是SDK向H5传递数据的时候,在nativeGetURL方法中导致了崩溃

com.android.org.chromium.content.browser.webcontents.WebContentsImpl.nativeGetURL(Native Method)
com.android.org.chromium.content.browser.webcontents.WebContentsImpl.getUrl(WebContentsImpl.java:160)
com.android.org.chromium.android_webview.AwContents.loadUrl(AwContents.java:1264)
com.android.webview.chromium.WebViewChromium.loadUrlOnUiThread(WebViewChromium.java:704)
com.android.webview.chromium.WebViewChromium.loadUrl(WebViewChromium.java:609)
com.android.webview.chromium.WebViewChromium.loadUrl(WebViewChromium.java:618)
android.webkit.WebView.loadUrl(WebView.java:879)
com.mintegral.msdk.mtgjscommon.windvane.g.a(WindVaneCallJs.java:102)
com.mintegral.msdk.video.js.bridge.BaseVideoBridge.init(BaseVideoBridge.java:103)
com.mintegral.msdk.video.js.bridge.VideoBridge.init(VideoBridge.java:26)
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
com.mintegral.msdk.mtgjscommon.a.a$d.a(Hack.java:189)
com.mintegral.msdk.mtgjscommon.windvane.h.handleMessage(WindVaneJsBridge.java:135)
android.os.Handler.dispatchMessage(Handler.java:107)
android.os.Looper.loop(Looper.java:194)
android.app.ActivityThread.main(ActivityThread.java:5588)
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969)
2019/04/26

[开发者集成][未解决] endcard 空白问题 - 没有任何文字内容, 但有基础按钮布局样式

进度: 后续开发者认为可能是自己的问题, 尝试自己解决, 暂时没有回复

初步确定可能导致此问题的原因为以下阶段

app.init() 进入 fetchMainData() 开始

fetchMainData() 中的 me.renderMain(campaign) 结束

  1. 请求 SDK 的 VideoBridge 类的 init 方法失败走 err 回调时
  2. 请求 1 成功, 但是返回的 res 数据出现 a) b) 两种情况, 导致逻辑走了 else 分支时
    a) res.campaignList 为空或者
    b) res.campaignList.length 长度为0

以上情况均会导致 endcard 内容空白, 如下图所示:

2019/04/26

SDK 返回的 `device_width` 和 `device_height` 不一致的问题

iOS 返回的 device_width 为真实设备宽度
Android 返回的 device_width 为像素宽度

if (util.device().isiOS) {
  device_width = appSetting.device.device_width * _scale;
  device_height = appSetting.device.device_height * _scale;
}
2019/04/25

cdn 资源在 SDK 中的跨域问题

cdn 资源在 SDK 中的请求必须加 ? 才可以正常返回 access-control-allow-origin: *

  1. 在 SDK 之外的浏览器中请求 cdn 图片资源, 可以正常返回 CORS 头
  2. 在 SDK 中访问七牛等其他 cdn 上的图片资源, 可以正常返回 CORS 头
  3. 在 SDK 中访问自有 cdn 上的图片资源, 没有返回 CORS 头; 但是如果jpg资源后面跟上了 ?, 就可以正常返回 access-control-allow-origin: * 哪怕没有任何参数
2019/04/18

[线上] SDK 8.5.7 3like.v4 不出关闭按钮问题

Android 8.7.0 以下的版本在加载 endcard_url 中的模板时不会保留 zip 包后的参数,导致 ? 后面的所有参数丢失(包括 page_interactive_type=3like.v4)

问题记录:

一个奇怪的现象: mock endcard 时, 使用老的 SDK 8.5.7 加载新的 webview 73 时, endcard 会强行走兜底(带 Mobvista 底部 logo)

PS:Android 8.5.7 版本只支持template_url为html类型,不支持zip类型;所以mock到zip类型的template url,会导致webview加载失败而进入兜底逻辑,目前的代码分析,一旦模板的webview走了兜底,endcard也走了兜底逻辑

Android SDK 8.5.7 template_url 无法加载 zip 包, 只能使用 html 的形式: "template_url": "http://192.168.5.122:8080/tpl1.html"

PS:Android SDK 8.5.7 在加载 template_url 时没有处理 zip 包的逻辑(和@卢宝确认过)

2019/04/18

CSS3 模糊效果导致模板黑屏问题

影响范围

系统: iOS
模板: 对图片使用了 filter: blur 效果的所有模板
机型: 手机, 平板

简介

使用 filter: blur(40px); 会导致模板内存占用在页面加载时飙升到 300-400MB;
针对使用了模糊效果的图层增加 transform: translateZ(0); 即可将内存降低至 100-150MB
黑屏率大幅降低; 避免内存占用过多导致 webview 被系统 kill 掉而黑屏的问题.

2019/04/18

Android ANR 问题

影响范围

系统: Android
模板: 所有 H5 视频播放模板
机型: 手机, 平板

当前状态

  1. 通过服务端下毒, 对webview=73的版本, endcard_url end_screen_url 返回空, 让 SDK 渲染原生的兜底模板
  2. 通过 SDK 发版解决了 endcard 和 paused_url

简介

2019/04/18

视频播放方向混乱问题

影响范围

系统: iOS, Android
模板: tpl1
机型: 手机, 平板

当前状态

iOS 已通过 H5 发版修复, Android 需要通过 SDK 发版解决

简介

2019/04/18

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

备注

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 依然会正常展示
2019/03/11