中文
登录
后可查看全部文档
成长工具/内容输出/内容SDK/常见问题&排查指南/短剧解锁逻辑及规则
短剧解锁逻辑及规则
最近更新 2025-03-17 15:27:08

一、解锁规则

1. 免费强规则:

免费观看的定义:用户没有任何解锁动作的前提下,从第一集开始,免费连续观看多少集。

  1. 规则1:当前只支持通过广告解锁,不支持iap/会员付费解锁&设置短剧全量免费观看,若不满足以下解锁规则,SDK会走兜底逻辑,强制出广告
  2. 规则2:最大不超过20集
  3. 规则3:每部剧的前20%,四舍五入计算
  4. 规则2和规则3两者取最大。

2. 解锁集数强校验:

解锁定义:观看一个激励视频解锁多少集

1.规则1:不支持设置观看一次激励视频解锁全集,若不满足以下解锁规则,SDK会走兜底逻辑,强制出广告

2. 规则2:一个激励视频最多解锁10集

二、解锁逻辑

1. 短剧解锁流程


2. 解锁说明

  1. 如何一次性解锁全集?
    1. 不支持一次性解锁,需要满足以下解锁规则,若开发者不通过广告解锁,巡检发现后会封禁应用
  2. 获取广告ecpm
    1. SDK解锁:即SDK会读取媒体的解锁配置(解锁模式、免费集数、解锁集数等)自动请求配置文件中穿山甲代码位解锁,不支持获取ecpm,开发者可以至穿山甲广告数据报表中获取广告相关数据
    2. 自定义解锁:即开发者自行请求广告(如融合SDK、Gromore等),具体实现方式如下,在广告曝光(回传cpm)、跳过、达到奖励回调(回传cpm)时通知SDK走后续的解锁流程,开发者可以至穿山甲广告数据报表中获取广告相关数据;
      1. Android:mTTRewardVideoAd.getMediationManager().getShowEcpm();
      2. iOS:BUMRitInfo *info = [self.rewardedVideoAd.mediation getShowEcpmInfo];   展示后可获取信息如下     NSLog(@"ecpm:%@", info.ecpm);
  1. 开发者可以通过SDK聚合页/自定义聚合页/滑滑流/卡片预览/历史记录等场景,进入短剧播放详情页;
    • 自建播放页:聚合页/滑滑流跳转自定义详情页Android需通过setEnterDelegate实现跳转,iOS实现customViewDelegate协议,可以实现在短剧播放详情页上自定义view(会随着短剧滑动而滑动,开发者可以将SDK封装短剧信息隐藏,自定义样式)
    • 滑滑流
      • 自定义广告解锁模式:iOS必须签署DJXPlayletInterfaceProtocol 协议,然后调用DJXPlayletConfig#interfaceDelegate,点击滑滑流视图下方的「下一集」,在clickEnterView方法内实现跳转详情页逻辑。
        • 需要将playletUnlockADMode设置为DJXPlayletUnlockADMode_Specific
        • 跳转详情页时在clickEnterView中需重新设置免费集数freeEpisodesCount和解锁集数unlockEpisodesCountUsingAD;
        • 新的详情页实例需添加interfaceDelegate才能监听解锁回调(在滑滑流页面签署的广告delegate会失效),实现方式:clickEnterView实现中增加DJXPlayletConfig#interfaceDelegate
      • SDK默认解锁:
        • iOS需要将playletUnlockADMode设置为DJXPlayletUnlockADMode_Common
        • iOS签署DJXPlayletInterfaceProtocol 协议,然后调用DJXPlayletConfig#interfaceDelegate监听广告解锁链路,不建议实现自定义广告方法(SDK解锁不触发该回调,只有自定义解锁才会触发)
  1. 开发者可以根据实际需要,选择通过观看激励广告进行解锁,解锁成功后即可观看短剧

三、常见问题

Q:短剧解锁是否可以自定义广告请求?

A:短剧解锁支持SDK解锁和自定义激励解锁两种方式:

① SDK解锁:即使用SDK封装好的广告请求,开发者可以根据实际业务情况自定义免费集数和每次解锁集数,SDK会通过请求配置文件中的代码位请求穿山甲激励视频广告,优点是接入简单,缺点是不能调整广告层级和请求逻辑等;

② 自定义解锁:SDK开放接口支持开发者实现自定义激励解锁,即开发者在showCustomAd/playletDetailUnlockFlowShowCustomAD回调里自行请求广告,如Gromore SDK,当广告曝光、发放奖励后都需要通过callback方法通知SDK走后续的解锁流程


Q:SDK解锁和自定义解锁代码实现上有啥区别?

解锁方式

Android

iOS

SDK解锁

SDK会请求配置文件中的代码位,不支持返回预估ecpm

(开发者指定免费集数和解锁集数等配置即可,SDK内部已封装了广告请求逻辑;)

① 基础配置

  • 解锁模式(admode):DJXDramaUnlockAdMode.MODE_COMMON
  • 免费集数(freeset):免费观看几集,需满足前文提到的解锁强规则
  • 解锁集数(lockSet):看一次激励视频解锁几集,需满足前文提到的解锁强规则

② 解锁链路监听(DJXDramaDetailConfig#IDJXDramaUnlockListener):

  • unlockFlowStart开发者在该回调里自定义解锁弹窗(文案),若不需要自渲染解锁弹窗可以直接传入广告解锁方案(短剧ID、解锁集数等),SDK 将展示默认弹窗
    • 触发时机:广告弹窗将要弹出之前
    • 广告解锁:开发者可以自定义解锁弹窗dialog,或使用SDK默认解锁弹窗,然后将解锁方案通过DJXDramaUnlockInfo#onConfirm回传。

可以通过DJXDramaDetailConfig#hideRewardDialog隐藏SDK封装的解锁弹窗

    • 取消解锁:用户取消解锁可以通过 onConfirm 回传 DJXDramaUnlockInfo.cancelUnlock = true通知 SDK
  • unlockFlowEnd触发时机一般是用户触发取消解锁、解锁失败或达到解锁点都会走该回调,用来感知解锁结果
  • showCustomAdSDK默认解锁(DJXDramaUnlockAdMode.MODE_COMMON)不触发该回调

③ 解锁结果监听

短剧详情页DJXDramaDetailConfig增加广告监听adListener,重点关注onDJXAdFillFail,若广告填充失败,无法解锁

① 基础配置

  • 解锁模式(playletUnlockADMode): DJXPlayletUnlockADMode_Common
  • 免费集数(freeEpisodesCount):免费观看几集,需满足前文提到的解锁强规则
  • 解锁集数(unlockEpisodesCountUsingAD):看一次激励视频解锁几集,需满足前文提到的解锁强规则

② 解锁链路监听(DJXPlayletConfig#interfaceDelegate):

  • playletDetailUnlockFlowStart:开发者在该回调里自定义解锁弹窗(文案),若不需要自渲染解锁弹窗可以直接传入广告解锁方案(短剧ID、解锁集数等),SDK 将展示默认弹窗
    • 触发时机:广告弹窗将要弹出之前
    • 广告解锁:开发者可以自定义解锁弹窗dialog,或使用SDK默认解锁弹窗,然后将解锁方案通过unlockInfoHandler回传。

可以通过DJXPlayletConfig#hideRewardDialog隐藏SDK封装解锁弹窗

    • 取消解锁:用户取消解锁可以通过 unlockInfoHandler 回传 DJXPlayletUnlockModel.cancelUnlock = YES通知 SDK
  • playletDetailUnlockFlowEnd:触发时机一般是用户触发取消解锁、解锁失败或达到解锁点都会走该回调,用来感知解锁结果
  • playletDetailUnlockFlowShowCustomAD:SDK默认解锁(ADMode=DJXPlayletUnlockADMode_Common)不会走该回调
2

③ 解锁结果监听

签署广告协议DJXPlayletAdvertProtocol,实现广告相关回调,重点关注djxAdFillFail,若广告填充失败,无法解锁

自定义解锁

开发者在穿山甲平台自行创建广告位/代码位,并自行请求广告

(自行请求激励广告,广告曝光,跳过,达到奖励下发时通知SDK走后续解锁逻辑)


① 基础配置

  • 解锁模式(admode):DJXDramaUnlockAdMode.MODE_SPECIFIC
  • 免费集数(freeset):免费观看几集,需满足前文提到的解锁强规则
  • 解锁集数(lockSet):看一次激励视频解锁几集,需满足前文提到的解锁强规则

② 解锁逻辑监听方法:

  • unlockFlowStart同SDK解锁
  • unlockFlowEnd同SDK解锁
  • showCustomAdSDK解锁不会走该回调,自定义解锁需要实现该回调,开发者可以在该回调方法自行请求广告,如Gromore SDK
    • 触发时机:该回调触发在用户点击“观看激励视频”按钮时。
    • 当广告曝光、达到奖励下发、跳过时需要通过callback方法通知SDK走后续的解锁流程
    • 广告曝光回调及奖励下发结果强烈建议回传广告cpm,如果实在无法回传,可以传入空字符串。

③ 解锁结果监听

开发者自行处理广告逻辑,填充成功/失败,曝光、点击等回调参考接入的广告SDK即可

① 基础配置

  • 解锁模式(playletUnlockADMode):DJXPlayletUnlockADMode_Specific
  • 免费集数(freeEpisodesCount):免费观看几集,需满足前文提到的解锁强规则
  • 解锁集数(unlockEpisodesCountUsingAD):看一次激励视频解锁几集,需满足前文提到的解锁强规则

② 解锁逻辑监听方法:

特别注意:自定义解锁场景在跳转详情页时,在滑滑流页面签署的广告delegate会失效,需要为新的详情页实例添加interfaceDelegate的实现

  1. playletDetailUnlockFlowStart同SDK解锁
  2. playletDetailUnlockFlowEnd同SDK解锁
  3. playletDetailUnlockFlowShowCustomADSDK解锁不会走该回调,自定义解锁需要实现该回调,开发者可以在该回调方法自行请求广告,如Gromore SDK
    1. 触发时机:该回调触发在用户点击“观看激励视频”按钮时。
    2. 当广告曝光、达到奖励下发、跳过时需要通过unlockInfoHandler方法通知SDK走后续的解锁流程
    3. 广告曝光回调onADWillShow及奖励下发结果result强烈建议回传广告cpm,如果实在无法回传,可以传入空字符串。

③ 解锁结果监听

开发者自行处理广告逻辑,填充成功/失败,曝光、点击等回调参考接入的广告SDK即可

连续解锁

连续看多次广告,解锁多集

在开始解锁回调unlockFlowStart 中配置连续解锁功能

详细可查看DramaDetailActivity的unlockFlowStart的实现

复制

配置后用户会在看完一个广告后,继续弹出下一个解锁视频的广告弹窗。

在开始解锁回调playletDetailUnlockFlowStart 中配置连续解锁功能

详细可查看LCSPlayletDetailConfigViewController的playletDetailUnlockFlowStart的实现

复制

配置后用户会在看完一个广告后,继续弹出下一个解锁视频的广告弹窗。



Q:短剧解锁失败?

A:可以监听广告填充回调(android:onDJXAdRequestFail、iOS:djxAdFillFail)信息,确认是不是广告没有填充导致解锁失败,如果自定义广告请求成功,需要调用callback.onRewardVerify(result)通知SDK解锁

报错20001-228,可以在平台将设备加白后30min左右再次尝试请求,穿山甲广告无填充常见错误码说明请参考:https://www.csjplatform.com/supportcenter/5421


Q:应用卸载后,重新安装,依然保留上一次的解锁记录

A:若开发者有接登录功能,即将用户数据和解锁打通,解锁记录会和用户uid绑定,若没有打通登录,则解锁记录是和设备是绑定的,退出登录仅删除本地存储的用户浏览记录,其他退出登录的绑定内容需开发者自行处理。


Q:是否可以设置全部免费观看?

A:不支持,目前SDK有强校验解锁逻辑,①最大不超过20集、②每部剧的前20%,四舍五入计算,①和②取最大,即如果一部短剧是120集,最多可以免费看24集(20和24=120*20%两者取较大),若开发者通过其他手段不展示广告,巡检发现后封禁应用


Q:自定义广告解锁CustomAdCallback#onshow不会传cpm会有什么影响?

A:cpm可以传空,cpm是判断作弊的一个条件,如果没有 cpm 且 没有监控到合理的广告展示,会把解锁功能强行切成 SDK 直出的广告模式,同时也会屏蔽所有的解锁逻辑,请知晓。


本篇目录
联系我们