更新记录
1.0.9(2026-10-28)
滑滑流和聚合页组件新增短剧备案筛选及内容隐私配置属性
1.0.8(2026-10-26)
修复滑滑流组件属性透传问题
1.0.7(2026-10-23)
滑滑流新增详情页外观配置,可控制奖励弹窗、返回按钮、信息区及操作按钮显示
查看更多平台兼容性
uni-app x(5.26)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 7.0 | 1.0.0 | 12 | 1.0.0 | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| √ | √ | √ | √ |
tt-djx-standard
穿山甲短剧自包含标准组件插件,为 uni-app x App 端同时提供短剧 API、原生弹窗、滑滑流组件和聚合页组件,支持 VDOM 与 Vapor。
支持能力:
- 短剧列表、推荐、分类、搜索、短剧信息查询。
- 观看记录、收藏列表、清空观看记录。
- 点赞 / 取消点赞,收藏 / 取消收藏。
- 分集解锁状态查询。
- 业务账号解锁记录绑定、解绑和绑定状态查询。
- 原生详情播放页、滑滑流
openDraw()、原生聚合页openHome()。 - 默认 SDK 解锁和业务侧自定义激励视频解锁回传。
- 可覆盖短剧原生页面的 Loading、Toast 和确认提示框。
- 短剧内容个性化、青少年模式、备案内容和内容 SDK 设备标识权限配置。
- 标准组件
tt-djx-draw(滑滑流)和tt-djx-home(聚合页)。 - 标准组件
tt-djx-detail:在 Android / iOS 内嵌短剧详情内容,并通过默认插槽叠加业务自定义悬浮窗。
tt-djx-standard与tt-djx-compat内含相同原生 SDK 和资源,请按技术栈二选一,不要在同一项目中同时安装。
与 API 插件的区别
组件版包含 tt-short-djx 的完整 API,额外提供可直接嵌入业务页面的滑滑流和聚合页。API 插件的 openDraw()、openHome() 会打开独立原生页面,不能作为当前页面布局的一部分。
| 能力 | tt-short-djx API 插件 |
tt-djx-standard 标准组件 |
tt-djx-compat 兼容组件 |
|---|---|---|---|
| 列表、搜索、收藏、播放页等 API | 支持 | 支持 | 支持 |
| 打开独立原生滑滑流 / 聚合页 | 支持 | 支持 | 支持 |
| 在业务页面内嵌滑滑流 | 不支持 | 支持 | 支持 |
| 在业务页面内嵌聚合页 | 不支持 | 支持 | 支持 |
| 在详情内容上叠加 uvue 自定义悬浮窗 | 不支持 | Android / iOS 支持 | 不支持 |
| 作为 tabBar 子页面内容 | 不支持内嵌 | 支持 | 支持 |
| 适用技术栈 | uni-app / uni-app x | uni-app x VDOM / Vapor | uni-app App-nvue |
如果只需要通过 API 打开独立原生页面,不需要页面内嵌组件,可以购买 穿山甲短剧 API 插件;需要把短剧内容放进现有页面、tabBar 或指定尺寸区域时,选择组件插件。
标准组件快速使用
<template>
<view class="container">
<tt-djx-draw class="drama" @load="onLoad" @error="onError" />
</view>
</template>
<style>
.container, .drama { flex: 1; width: 100%; }
</style>
聚合页将标签替换为 tt-djx-home。API 直接从本插件导入:
import { createShortDrama } from '@/uni_modules/tt-djx-standard'
const shortDrama = createShortDrama()
shortDrama.showLoading({ title: '加载中…', mask: true })
shortDrama.showToast({ title: '加载完成' })
如需在短剧详情内容上叠加可由业务修改的悬浮窗,可使用 tt-djx-detail。悬浮窗本身写在默认插槽内,因此其样式、位置、大小和点击交互均由 uvue 控制:
<template>
<tt-djx-detail class="drama" :drama-id="dramaId">
<view class="float-window" @click.stop="handleFloatClick">
<text class="float-window__text">活动</text>
</view>
</tt-djx-detail>
</template>
<script setup lang="uts">
const dramaId = ref('实际短剧 ID')
function handleFloatClick() {
uni.showToast({ title: '点击了悬浮窗', icon: 'none' })
}
</script>
<style>
.drama { flex: 1; width: 100%; }
.float-window {
position: absolute;
right: 16px;
top: 140px;
width: 64px;
height: 64px;
border-radius: 32px;
background-color: rgba(124, 58, 237, 0.92);
align-items: center;
justify-content: center;
z-index: 100;
}
.float-window__text { color: #ffffff; }
</style>
悬浮窗使用普通 uvue 编写,绝对定位以 tt-djx-detail 容器为参照,样式、位置、大小和点击逻辑均由业务控制。不要在插槽中增加全屏透明遮罩,否则会拦截详情页的点击和上下滑动;超出详情组件边界的内容会被裁剪。
tt-djx-detail支持 Android 和 iOS。短剧详情内容仍由穿山甲 SDK 渲染。只有内嵌详情组件支持 uvue 悬浮窗,通过open()打开的独立原生播放页不支持插槽。
示例项目中的可运行页面:
pages/draw-api/index:open()、openDraw()、openHome()、页面事件和原生 Loading / Toast / Modal。pages/api-data/index:列表、推荐、分类、搜索、详情查询、观看记录、收藏、点赞、分集解锁状态、内容个性化和自定义激励解锁。pages/detail-component/index:详情组件、自定义悬浮窗以及在播放内容上方显示原生弹窗。
账号解锁记录绑定依赖业务服务端生成签名参数,示例不会内置服务端密钥或伪造签名;请按“解锁记录绑定”章节接入真实服务端参数。
组件挂载前初始化广告
组件挂载时会自动初始化短剧 SDK,不需要业务侧调用 createShortDrama()。因此必须在组件首次渲染前创建并保留一个 UniAd 广告实例,否则可能出现 -9001。初始化必须在用户同意隐私协议之后执行。
let rewardedVideoAd: RewardedVideoAd | null = null
function initShortDramaAd() {
if (rewardedVideoAd != null) return
rewardedVideoAd = uni.createRewardedVideoAd({
adpid: '当前应用的激励视频广告位 ID'
})
rewardedVideoAd?.onError((error) => {
console.error('UniAd 初始化失败', error)
})
}
请在隐私授权完成后、包含短剧组件的页面显示前调用 initShortDramaAd()。这里仅用于初始化 UniAd/GroMore,不需要主动调用 show()。
短剧内容个性化与隐私配置
在用户同意隐私协议后、首个短剧组件挂载前调用:
import { configureShortDrama } from '@/uni_modules/tt-djx-standard'
configureShortDrama({
personalizationEnabled: true,
teenagerMode: false,
onlyICPContent: false,
allowAndroidId: true,
allowOAID: true,
allowIDFA: true
})
| 字段 | 平台 | 默认值 | 说明 |
|---|---|---|---|
personalizationEnabled |
Android / iOS | true |
是否启用短剧内容个性化推荐。 |
teenagerMode |
Android / iOS | false |
青少年模式;启用后 SDK 不返回短剧内容。 |
onlyICPContent |
Android / iOS | false |
只返回有备案号的短剧。 |
allowAndroidId |
Android | true |
允许内容 SDK 使用 Android ID。 |
allowOAID |
Android | true |
允许内容 SDK 使用 OAID。 |
allowIDFA |
iOS | true |
允许内容 SDK 访问 IDFA,仍受 ATT 授权状态限制。 |
除内容个性化外,其他字段都是初始化配置,SDK 启动后修改不会重新生效。用户运行中切换内容个性化时可调用 shortDrama.setContentPersonalization(enabled, success?, fail?)。
tt-djx-draw 和 tt-djx-home 也支持直接传入这组配置属性。只需在组件标签上设置需要覆盖的字段;未传字段会沿用 configureShortDrama() 或 createShortDrama() 设置的值。配置必须在第一次短剧 API 请求或短剧组件创建前确定;组件初始化后更改属性不会重新初始化 SDK。该设置只影响短剧内容推荐,不会修改 UniAd/穿山甲广告的个性化开关;广告个性化应由应用的广告层统一处理。
标准组件参考
内容合规与隐私配置组件属性
以下属性可用于 tt-djx-draw 和 tt-djx-home;属性名在模板中使用 kebab-case。它们对应 CreateShortDramaOptions / ShortDramaContentConfig 的全局初始化配置:
| 属性 | 类型 | 默认行为 | 说明 |
|---|---|---|---|
onlyICPContent |
boolean |
沿用全局配置(默认 false) |
只返回有备案号的短剧内容。 |
personalizationEnabled |
boolean |
沿用全局配置(默认 true) |
是否启用短剧内容个性化推荐。 |
teenagerMode |
boolean |
沿用全局配置(默认 false) |
青少年模式;启用后 SDK 不返回短剧内容。 |
allowAndroidId |
boolean |
沿用全局配置(默认 true) |
Android 内容 SDK 是否可使用 Android ID。 |
allowOAID |
boolean |
沿用全局配置(默认 true) |
Android 内容 SDK 是否可使用 OAID。 |
allowIDFA |
boolean |
沿用全局配置(默认 true) |
iOS 内容 SDK 是否可访问 IDFA,仍受 ATT 授权限制。 |
备案筛选示例:
<tt-djx-draw class="drama" :only-icp-content="true" />
这些设置是 SDK 初始化配置,需在第一次短剧 API 请求或组件初始化前传入。详情组件只播放指定 dramaId,不会进行列表筛选;需要限制全局内容时,请在首次短剧 API 请求或组件创建前通过 configureShortDrama() 配置。
tt-djx-draw 滑滑流组件
滑滑流和进入后的详情页都使用纵向手势。组件所在页面必须在 pages.json 中配置 disableScroll: true,避免 uni-app x Vapor 页面自身的默认滚动与原生滑动手势冲突:
{
"path": "pages/drama-draw/index",
"style": {
"navigationBarTitleText": "短剧",
"disableScroll": true
}
}
如果组件放在 tabBar 页面,同样需要为该 tabBar 子页面设置 disableScroll: true。不要再把组件包进纵向 scroll-view;组件高度直接由外层 view 的布局控制。
穿山甲 SDK 当前没有提供统一的组件暂停 / 恢复接口。若切换 tabBar 后不希望后台继续播放,应在页面隐藏时通过 v-if 卸载组件,在页面重新显示时创建组件:
<tt-djx-draw v-if="componentVisible" class="drama" />
<script setup lang="uts">
const componentVisible = ref(true)
onShow(() => { componentVisible.value = true })
onHide(() => { componentVisible.value = false })
</script>
这种方式会销毁并重新创建原生内容,播放位置不会自动续接;如需续播,应由业务保存短剧 ID 和集数后重新传入。
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
adSiteId |
string |
'' |
穿山甲媒体 ID;为空时读取 SDK_Setting.json。 |
channelType |
'recommend' \| 'theater' \| 'recommendTheater' |
'recommend' |
滑滑流频道类型。 |
hideChannelName |
boolean |
false |
是否隐藏频道名称 / 顶部频道 tab。 |
hideDramaInfo |
boolean |
false |
是否隐藏底部短剧信息;当前仅 Android 生效。 |
hideDramaEnter |
boolean |
false |
是否隐藏进入短剧详情的入口。 |
enableRefresh |
boolean |
true |
是否允许刷新;当前仅 Android 生效。 |
dramaFree |
number |
1 |
滑滑流场景的免费集数。 |
topDramaId |
string |
'0' |
置顶短剧 ID,传 '0' 表示不指定。 |
freeEpisodeCount |
number |
1 |
进入详情播放页后的前置免费集数,范围 1-20。 |
unlockEpisodeCount |
number |
1 |
每次激励视频解锁的集数,范围 1-10。 |
unlockAdMode |
'sdk' \| 'custom' |
'sdk' |
SDK 内置广告或业务侧自定义广告。 |
hideRewardDialog |
boolean |
false |
是否隐藏进入详情页后的激励广告确认弹窗。 |
hideBack |
boolean |
false |
是否隐藏详情页返回按钮。 |
hideTopInfo |
boolean |
false |
是否隐藏详情页顶部信息。 |
hideBottomInfo |
boolean |
false |
是否隐藏详情页底部短剧信息。 |
hideMore |
boolean |
false |
是否隐藏详情页更多按钮。 |
hideLikeButton |
boolean |
false |
是否隐藏详情页点赞按钮。 |
hideFavorButton |
boolean |
false |
是否隐藏详情页收藏按钮。 |
topOffset |
number |
-1 |
详情页顶部偏移;-1 使用 SDK 默认适配,仅 Android 生效。 |
bottomOffset |
number |
-1 |
详情页底部偏移;-1 使用 SDK 默认适配,仅 Android 生效。 |
在组件标签上直接传属性,模板中使用 kebab-case。下面示例隐藏详情页奖励弹窗和操作控件,并将 Android 详情页顶部、底部偏移分别设为 120px 和 80px:
<template>
<tt-djx-draw
class="drama"
channel-type="recommend"
:hide-reward-dialog="true"
:hide-back="true"
:hide-top-info="true"
:hide-bottom-info="true"
:hide-more="true"
:hide-like-button="true"
:hide-favor-button="true"
:top-offset="120"
:bottom-offset="80"
/>
</template>
<style>
.drama { flex: 1; width: 100%; }
</style>
top-offset 和 bottom-offset 仅 Android 生效。
嵌入组件没有独立页面关闭按钮,因此内部固定 hideClose: true,不对外提供 hideClose 属性。
tt-djx-home 聚合页组件
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
adSiteId |
string |
'' |
穿山甲媒体 ID;为空时读取 SDK_Setting.json。 |
showChangeBtn |
boolean |
true |
是否显示“换一换”;当前仅 Android 生效。 |
showPageTitle |
boolean |
true |
是否显示 SDK 聚合页标题。 |
topDramaId |
string |
'0' |
置顶短剧 ID,传 '0' 表示不指定。 |
freeEpisodeCount |
number |
1 |
进入详情播放页后的前置免费集数,范围 1-20。 |
unlockEpisodeCount |
number |
1 |
每次激励视频解锁的集数,范围 1-10。 |
unlockAdMode |
'sdk' \| 'custom' |
'sdk' |
SDK 内置广告或业务侧自定义广告。 |
嵌入组件没有独立页面返回按钮,内部固定 showBackBtn: false、topOffset: 0;这两个 API 页面参数不是组件属性。
tt-djx-detail 详情组件
tt-djx-detail 在当前页面内嵌短剧详情内容,默认插槽用于放置业务自定义悬浮窗。组件会固定隐藏 SDK 返回按钮,页面返回由外层 uni-app x 页面负责。组件所在页面应在 pages.json 中设置 disableScroll: true,避免页面滚动与详情页上下滑动手势冲突。
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dramaId |
string |
必填 | 要播放的短剧 ID。 |
adSiteId |
string |
'' |
穿山甲媒体 ID;为空时读取 SDK_Setting.json。 |
startEpisode |
number |
1 |
起播集数。 |
freeEpisodeCount |
number |
1 |
前置免费观看集数。 |
unlockEpisodeCount |
number |
1 |
每次广告解锁集数。 |
unlockAdMode |
'sdk' \| 'custom' |
'sdk' |
SDK 内置广告或业务侧自定义广告。 |
hideTopInfo |
boolean |
false |
是否隐藏详情页顶部信息。 |
hideBottomInfo |
boolean |
false |
是否隐藏详情页底部信息。 |
hideMore |
boolean |
false |
是否隐藏更多入口。 |
hideLikeButton |
boolean |
false |
是否隐藏点赞按钮。 |
hideFavorButton |
boolean |
false |
是否隐藏收藏按钮。 |
hideRewardDialog |
boolean |
false |
是否隐藏 SDK 奖励提示框。 |
topOffset |
number |
-1 |
顶部偏移;-1 使用 SDK 默认适配,当前仅 Android 生效。 |
bottomOffset |
number |
-1 |
底部偏移;-1 使用 SDK 默认适配,当前仅 Android 生效。 |
支持 load、error、playEvent、adEvent、unlockEvent 事件,并暴露 reload()、notifyUnlockAdWillShow(options)、completeUnlock(options) 方法。属性变化会重新创建详情内容;卸载组件时会自动销毁原生内容。
组件事件
| 事件 | 滑滑流 | 聚合页 | 详情 | 说明 |
|---|---|---|---|---|
load |
支持 | 支持 | 支持 | 原生组件创建并挂载成功。 |
error |
支持 | 支持 | 支持 | 初始化、配置或原生页面创建失败,参数为 ShortDramaError。 |
drawEvent |
支持 | - | - | 滑滑流请求、加载和关闭等事件。 |
homeEvent |
- | 支持 | - | 聚合页请求、加载和创建失败等事件。 |
playEvent |
支持 | 支持 | 支持 | 内部详情播放事件。 |
adEvent |
支持 | 支持 | 支持 | SDK 广告事件。 |
unlockEvent |
支持 | 支持 | 支持 | 自定义解锁事件。 |
标准组件事件处理函数直接接收对应事件数据:
<tt-djx-draw
@load="handleLoad"
@error="handleError"
@drawEvent="handleDrawEvent"
/>
组件方法
三个组件均通过模板引用暴露以下方法:
| 方法 | 返回值 | 说明 |
|---|---|---|
reload() |
void |
使用当前属性重新创建原生内容。 |
notifyUnlockAdWillShow(options) |
boolean |
自定义解锁时通知 SDK 激励视频即将展示。 |
completeUnlock(options) |
boolean |
自定义解锁完成后回传成功或失败。 |
组件属性改变时会自动重新加载原生内容,可能重置当前滚动位置或播放状态;不要在高频响应式数据中反复修改组件属性。
组件自定义广告流程
unlockAdMode="sdk" 不需要处理 unlockEvent。使用 custom 时,应监听 unlockRequired,通过当前组件引用完成广告展示和结果回传:
<tt-djx-draw
ref="drawRef"
unlock-ad-mode="custom"
@unlockEvent="handleUnlockEvent"
/>
流程要求:
- 收到
unlockRequired后保存其taskId。 - 广告真实展示前调用组件的
notifyUnlockAdWillShow({ taskId, cpm })。 - 奖励下发后调用
completeUnlock({ taskId, success: true, cpm })。 - 加载失败、展示失败或用户跳过时调用
completeUnlock({ taskId, success: false })。
布局、tabBar 与样式边界
- 组件宽高完全由外层布局决定,必须给组件或父容器提供明确的宽高或
flex: 1。 - 普通页面和 tabBar 子页面都可以直接放置组件,不需要
active属性。 - 原生 tabBar 可能覆盖 native-view 底部,页面应根据
uni.getWindowInfo().windowBottom预留空间;取不到时可使用“50px + 底部安全区”兜底。 - 外层可以控制宽高、间距和所在布局区域;SDK 内部卡片、字体、颜色、封面比例等不能任意换肤。
- 内部样式只能通过组件公开的频道、标题和显示/隐藏属性有限调整。
- 业务页面上的 Loading、Toast 和确认框请使用本插件的
showLoading()、showToast()、showModal()原生 API,确保能显示在短剧原生内容上方。
接入前必读
- 仅支持 App 真机环境;请使用自定义基座或云打包后的 App 调试,浏览器和小程序环境不能调用本插件。
- Android 平台运行时不要勾选“清理构建缓存”,否则运行时可能报错。
- 最低支持 HBuilderX
5.26,低于该版本不保证能够编译或运行。 - 应用须先在穿山甲 / 巨量引擎后台开通短剧内容能力,并在 HBuilderX /
manifest.json中勾选穿山甲 GroMore 模块。 - 必须勾选 HBuilderX /
manifest.json中的穿山甲 GroMore(UniAd)模块,并先调用一次 UniAd 广告 API(例如uni.createRewardedVideoAd())完成广告 SDK 初始化,再调用createShortDrama();否则可能出现 UniAd 错误-9001。 SDK_Setting.json、Android 包名或 iOS Bundle ID 必须与当前应用及其短剧授权一致;不要使用示例应用或其他应用的配置文件。- 短剧仅支持广告解锁,不支持 IAP、会员付费解锁或将短剧全量设为免费观看。短剧 SDK 会校验免费集数和解锁集数,不符合规则时会强制展示广告,规避广告解锁可能导致应用被封禁。
- 短剧解锁广告必须包含穿山甲广告,并产生真实广告曝光。
- 建议开通 UniAd,并联系相关人员在激励视频广告位瀑布流中配置穿山甲广告,穿山甲广告填充率须大于 6%。
- 相关规则请参阅:穿山甲支持中心说明。
目录
版本信息
HBuilderX 兼容性
最低支持 HBuilderX 5.26。请使用该版本或更高版本进行自定义基座制作、云打包和真机调试。
| 平台 | SDK 版本 | 支持状态 |
|---|---|---|
| iOS | 2.9.0.6 |
支持 |
| Android | 3.0.0.2 |
支持 |
配置文件
完成“接入前必读”的检查后,将当前应用对应的 SDK_Setting.json 放入插件目录。
Android 配置
将 Android 应用对应的 SDK_Setting.json 放到:
uni_modules/tt-djx-standard/utssdk/app-android/assets/SDK_Setting.json
重点检查:
init.site_id是当前 Android 应用的穿山甲媒体 ID。license_config.PackageName与项目 Android 包名一致。- 后台已为该应用开通短剧功能,并配置短剧相关广告位。
iOS 配置
将 iOS 应用对应的 SDK_Setting.json 放到:
uni_modules/tt-djx-standard/utssdk/app-ios/Resources/SDK_Setting.json
重点检查:
init.site_id是当前 iOS 应用的穿山甲媒体 ID。license_config.BundleId与项目 iOS Bundle ID 一致。- 后台已为该应用开通短剧功能,并配置短剧相关广告位。
adSiteId 与 adpid
adSiteId:穿山甲广告 SDK 媒体 ID,用于广告 SDK / 短剧 SDK 初始化。不传时插件会读取SDK_Setting.json的init.site_id。adpid:激励视频广告位 ID,仅业务侧自定义解锁流程使用,不需要传给createShortDrama()。
创建实例时可显式传入 adSiteId:
const shortDrama = createShortDrama({
adSiteId: '你的穿山甲媒体 ID'
})
快速开始
导入并创建实例
import { createShortDrama } from '@/uni_modules/tt-djx-standard'
import type { ShortDrama } from '@/uni_modules/tt-djx-standard/utssdk/interface.uts'
let shortDrama: ShortDrama | null = null
// 先触发 UniAd/GroMore 初始化,再创建短剧 SDK 实例。
uni.createRewardedVideoAd({ adpid: '你的激励视频广告位 ID' })
export default {
onLoad() {
shortDrama = createShortDrama()
},
onUnload() {
shortDrama?.destroy()
shortDrama = null
}
}
获取推荐并打开播放页
shortDrama?.getRecommendedList(
{ page: 1, pageSize: 20 },
(res) => {
if (res.list.length === 0) return
const item = res.list[0]
shortDrama?.open(
{
dramaId: item.dramaId,
startEpisode: item.currentEpisode > 0 ? item.currentEpisode : 1,
freeEpisodeCount: 1,
unlockEpisodeCount: 1,
unlockAdMode: 'sdk'
},
() => console.log('打开成功'),
(err) => console.error('打开失败', err)
)
},
(err) => console.error('推荐列表获取失败', err)
)
默认 unlockAdMode: 'sdk' 使用 SDK_Setting.json 中的短剧解锁广告配置,不需要业务侧传入激励视频广告位 ID。
常用能力示例
列表、分类、搜索
shortDrama.getList({ page: 1, pageSize: 20, order: 'default' }, success, fail)
shortDrama.getRecommendedList({ page: 1, pageSize: 20 }, success, fail)
shortDrama.getCategories(success, fail)
shortDrama.getListByCategory({ category: '霸总', page: 1, pageSize: 20 }, success, fail)
shortDrama.search({ keyword: '霸总', fuzzy: true, page: 1, pageSize: 20 }, success, fail)
shortDrama.getInfo({ dramaId: '123456' }, success, fail)
shortDrama.getInfo({ dramaIds: ['123456', '789012'] }, success, fail)
观看记录与收藏列表
shortDrama.getWatchHistory({ page: 1, pageSize: 20 }, success, fail)
shortDrama.getFavorites({ page: 1, pageSize: 20 }, success, fail)
shortDrama.clearWatchHistory(success, fail)
点赞与收藏操作
shortDrama.like({ dramaId: '123456', episode: 1 }, success, fail)
shortDrama.unlike({ dramaId: '123456', episode: 1 }, success, fail)
shortDrama.favorite({ dramaId: '123456', episode: 1 }, success, fail)
shortDrama.unfavorite({ dramaId: '123456', episode: 1 }, success, fail)
说明:
like()/unlike()操作指定短剧集。favorite()/unfavorite()操作短剧收藏;iOS 收藏 / 取消收藏接口不使用episode,传入也会被忽略。
分集解锁状态
shortDrama.getEpisodeUnlockStatus(
{ dramaId: '123456', freeEpisodeCount: 1 },
(res) => {
const locked = res.list.filter((item) => item.locked)
console.log('锁定集数', locked)
},
fail
)
打开详情播放页
shortDrama.open(
{
dramaId: '123456',
startEpisode: 1,
freeEpisodeCount: 1,
unlockEpisodeCount: 1,
unlockAdMode: 'sdk',
hideLikeButton: false,
hideFavorButton: false
},
success,
fail
)
打开滑滑流
shortDrama.openDraw(
{
channelType: 'recommend',
hideChannelName: false,
hideDramaEnter: false,
hideClose: false,
dramaFree: 1,
topDramaId: '0',
freeEpisodeCount: 1,
unlockEpisodeCount: 1,
unlockAdMode: 'sdk'
},
success,
fail
)
打开原生聚合页
shortDrama.openHome(
{
showPageTitle: true,
showBackBtn: true,
topDramaId: '0',
freeEpisodeCount: 1,
unlockEpisodeCount: 1,
unlockAdMode: 'sdk'
},
success,
fail
)
原生 Loading、Toast 和提示框
弹窗会从当前最上层 Activity/ViewController 展示,因此通过 open()、openDraw()、openHome() 打开的原生页面也可以显示。
shortDrama.showLoading({ title: '正在加载…', mask: true })
shortDrama.hideLoading()
shortDrama.showToast({
title: '加载成功',
duration: 2000,
position: 'center'
})
shortDrama.showModal(
{
title: '提示',
content: '是否继续播放?',
showCancel: true,
cancelText: '取消',
confirmText: '继续'
},
(result) => {
console.log(result.confirm ? '继续' : '取消')
}
)
自定义解锁流程
默认 SDK 解锁不需要监听 onUnlockEvent(),也不需要调用 completeUnlock()。只有当 unlockAdMode: 'custom' 时,业务侧才需要监听 unlockRequired、展示激励视频,并把结果回传给短剧 SDK。
const rewardAd = uni.createRewardedVideoAd({
adpid: '你的激励视频广告位 ID'
})
// 广告实例的生命周期回调只注册一次,不要放进 onUnlockEvent。
let pendingTaskId = ''
function showPendingRewardAd() {
if (pendingTaskId.length === 0) return
// 广告真实展示前通知短剧 SDK。
shortDrama.notifyUnlockAdWillShow({ taskId: pendingTaskId })
rewardAd.show()
}
rewardAd.onLoad(() => {
showPendingRewardAd()
})
rewardAd.onClose((res) => {
if (pendingTaskId.length === 0) return
shortDrama.completeUnlock({
taskId: pendingTaskId,
success: res.isEnded === true,
extra: { isEnded: res.isEnded } as UTSJSONObject
})
pendingTaskId = ''
})
rewardAd.onError((err) => {
if (pendingTaskId.length === 0) return
shortDrama.completeUnlock({
taskId: pendingTaskId,
success: false,
extra: { error: err } as UTSJSONObject
})
pendingTaskId = ''
})
shortDrama.onUnlockEvent((event) => {
if (event.type !== 'unlockRequired') return
pendingTaskId = event.taskId
rewardAd.load()
})
广告加载失败、展示失败或用户跳过广告时,也应调用 completeUnlock({ taskId, success: false }),避免解锁任务挂起。
广告曝光回调 onADWillShow 和奖励下发结果应优先回传广告真实 CPM。无法获取 CPM 时可以传空字符串 ''。
解锁记录绑定
有业务账号体系时,在业务登录成功且短剧 SDK 初始化完成后,先由业务服务端使用穿山甲后台的 server key 生成签名参数,再调用绑定接口。签名参数格式为 nonce=...&ouid=...×tamp=...&sign=...;不要把 server key 下发、保存或传入客户端。
// params 由业务服务端返回,ouid 为稳定的业务账号 ID。
shortDrama.bindUnlockRecord({ params }, (result) => {
console.log('解锁记录已绑定', result.bound, result.extra)
}, (err) => {
console.error('绑定失败', err.code, err.message)
})
// 账号切换:先等待旧账号解绑成功,再绑定新账号。
shortDrama.unbindUnlockRecord(() => {
// 调用 bindUnlockRecord({ params: newAccountParams })
})
// 仅在业务账号真实退出登录时调用;关闭播放页或 destroy() 不应自动解绑。
shortDrama.unbindUnlockRecord()
绑定后,短剧 SDK 会将该账号的已解锁剧集权益同步到当前设备;未绑定时按游客状态处理。应在读取分集解锁状态或打开播放页前完成绑定。
API 参考
createShortDrama(options?)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
adSiteId |
string |
否 | 穿山甲广告 SDK 媒体 ID;不传时读取 SDK_Setting.json 的 init.site_id。 |
personalizationEnabled |
boolean |
否 | 短剧内容个性化推荐,默认 true。 |
teenagerMode |
boolean |
否 | 青少年模式,默认 false。 |
onlyICPContent |
boolean |
否 | 是否只返回有备案号内容。 |
allowAndroidId / allowOAID |
boolean |
否 | Android 内容 SDK 设备标识开关。 |
allowIDFA |
boolean |
否 | iOS 内容 SDK IDFA 访问开关。 |
ShortDrama 方法
| 方法 | 说明 |
|---|---|
setContentPersonalization(enabled, success?, fail?) |
运行时更新短剧内容个性化推荐,不影响广告个性化。 |
isContentPersonalizationEnabled() |
获取当前短剧内容个性化推荐开关。 |
getList(options, success?, fail?) |
获取全量短剧列表。 |
getRecommendedList(options, success?, fail?) |
获取推荐短剧列表。 |
getCategories(success?, fail?) |
获取短剧分类列表。 |
getListByCategory(options, success?, fail?) |
按分类获取短剧列表。 |
getInfo(options, success?, fail?) |
按 dramaId 或 dramaIds 查询短剧信息。 |
getWatchHistory(options, success?, fail?) |
获取观看记录列表。 |
getFavorites(options, success?, fail?) |
获取收藏列表。 |
clearWatchHistory(success?, fail?) |
清空观看记录。 |
getEpisodeUnlockStatus(options, success?, fail?) |
获取短剧分集解锁 / 锁定状态。 |
bindUnlockRecord(options, success?, fail?) |
将游客解锁记录绑定到服务端签名参数中的业务账号。 |
unbindUnlockRecord(success?, fail?) |
解绑当前业务账号;仅用于业务退出登录。 |
isUnlockRecordBound() |
查询短剧 SDK 是否已绑定业务账号。 |
like(options, success?, fail?) / unlike(options, success?, fail?) |
点赞 / 取消点赞指定短剧集。 |
favorite(options, success?, fail?) / unfavorite(options, success?, fail?) |
收藏 / 取消收藏短剧。 |
search(options, success?, fail?) |
搜索短剧。 |
open(options, success?, fail?) |
打开原生短剧播放页。 |
openDraw(options, success?, fail?) |
打开 Android / iOS 原生短剧滑滑流页面。 |
openHome(options, success?, fail?) |
打开 Android / iOS 原生短剧聚合页。 |
notifyUnlockAdWillShow(options) |
自定义解锁流程中,通知短剧 SDK 业务侧激励视频广告即将展示。 |
completeUnlock(options) |
自定义解锁流程中,通知短剧 SDK 业务侧解锁流程已完成。 |
showLoading(options?) |
在当前最上层短剧原生页面显示 Loading。 |
hideLoading() |
隐藏当前实例显示的 Loading。 |
showToast(options) |
在当前最上层短剧原生页面显示轻提示。 |
showModal(options, success?) |
在当前最上层短剧原生页面显示确认提示框。 |
destroy() |
销毁实例并解绑事件。 |
onLoad(callback) / offLoad(callback?) |
监听 / 清空加载成功事件。 |
onError(callback) / offError(callback?) |
监听 / 清空错误事件。 |
onPlayEvent(callback) / offPlayEvent(callback?) |
监听 / 清空详情播放页事件。 |
onDrawEvent(callback) / offDrawEvent(callback?) |
监听 / 清空滑滑流事件。 |
onHomeEvent(callback) / offHomeEvent(callback?) |
监听 / 清空聚合页事件。 |
onAdEvent(callback) / offAdEvent(callback?) |
监听 / 清空广告事件。 |
onUnlockEvent(callback) / offUnlockEvent(callback?) |
监听 / 清空解锁事件。 |
success / fail 均可省略。未传 fail 时,插件会把错误转发到 onError();offXxx(callback?) 在 Android / iOS 均统一为清空当前事件的全部监听,不保证只移除传入的单个 callback。
Options
ShortDramaListOptions
适用于 getList()、getRecommendedList()、getWatchHistory()、getFavorites()。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
page |
number |
否 | 1 |
页码,从 1 开始。 |
pageSize |
number |
否 | 20 |
每页数量。 |
order |
'default' \| 'reverse' |
否 | 'default' |
排序方式,部分接口可能由原生 SDK 决定是否生效。 |
ShortDramaCategoryListOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
category |
string |
是 | - | 分类名称,例如 霸总。 |
page |
number |
否 | 1 |
页码,从 1 开始。 |
pageSize |
number |
否 | 20 |
每页数量。 |
order |
'default' \| 'reverse' |
否 | 'default' |
排序方式。 |
ShortDramaInfoOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dramaId |
string |
否 | 单个短剧 ID,和 dramaIds 二选一。 |
dramaIds |
Array<string> |
否 | 多个短剧 ID,和 dramaId 二选一。 |
ShortDramaEpisodeUnlockStatusOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
dramaId |
string |
是 | - | 短剧 ID。 |
freeEpisodeCount |
number |
否 | 0 |
前置免费观看集数。 |
ShortDramaUserActionOptions
适用于 like()、unlike()、favorite()、unfavorite()。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
dramaId |
string |
是 | - | 短剧 ID。 |
episode |
number |
否 | 1 |
集数;iOS 收藏 / 取消收藏接口不使用该参数。 |
ShortDramaSearchOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
keyword |
string |
是 | - | 搜索关键词。 |
fuzzy |
boolean |
否 | true |
是否开启模糊搜索。 |
page |
number |
否 | 1 |
页码,从 1 开始。 |
pageSize |
number |
否 | 20 |
每页数量。 |
ShortDramaOpenOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
dramaId |
string |
是 | - | 短剧 ID。 |
startEpisode |
number |
否 | 1 |
起播集数。 |
unlockEpisodeCount |
number |
否 | 1 |
每次激励视频可解锁的集数,范围 1-10。 |
freeEpisodeCount |
number |
否 | 1 |
前置免费观看集数,范围 1-20。 |
unlockAdMode |
'sdk' \| 'custom' |
否 | 'sdk' |
解锁广告模式。 |
hideBack |
boolean |
否 | false |
是否隐藏详情页返回按钮。 |
hideTopInfo |
boolean |
否 | false |
是否隐藏详情页顶部信息。 |
hideBottomInfo |
boolean |
否 | false |
是否隐藏详情页底部短剧信息。 |
hideMore |
boolean |
否 | false |
是否隐藏详情页更多按钮。 |
hideLikeButton |
boolean |
否 | false |
是否隐藏详情页点赞按钮。 |
hideFavorButton |
boolean |
否 | false |
是否隐藏详情页收藏按钮。 |
hideRewardDialog |
boolean |
否 | false |
是否隐藏详情页激励广告确认弹窗。 |
topOffset |
number |
否 | - | 详情页顶部偏移,单位 px;当前仅 Android 生效。 |
bottomOffset |
number |
否 | - | 详情页底部偏移,单位 px;当前仅 Android 生效。 |
ShortDramaDrawOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
channelType |
'recommend' \| 'theater' \| 'recommendTheater' |
否 | 'recommend' |
滑滑流频道类型。 |
hideChannelName |
boolean |
否 | false |
是否隐藏频道名称 / 顶部频道 tab。 |
hideDramaInfo |
boolean |
否 | false |
是否隐藏底部短剧信息;当前仅 Android 生效。 |
hideDramaEnter |
boolean |
否 | false |
是否隐藏底部短剧入口。 |
enableRefresh |
boolean |
否 | true |
是否支持下拉刷新;当前仅 Android 生效。 |
hideClose |
boolean |
否 | false |
是否隐藏关闭按钮。 |
dramaFree |
number |
否 | 1 |
短剧滑滑流免费集数。 |
topDramaId |
string |
否 | '0' |
置顶短剧 ID,不传或传 '0' 表示不指定。 |
freeEpisodeCount |
number |
否 | 1 |
进入详情播放页后的前置免费观看集数,范围 1-20。 |
unlockEpisodeCount |
number |
否 | 1 |
进入详情播放页后,每次激励视频可解锁的集数,范围 1-10。 |
unlockAdMode |
'sdk' \| 'custom' |
否 | 'sdk' |
解锁广告模式。 |
hideRewardDialog |
boolean |
否 | false |
是否隐藏滑滑流进入详情页后的激励广告确认弹窗。 |
hideBack |
boolean |
否 | false |
是否隐藏详情页返回按钮。 |
hideTopInfo |
boolean |
否 | false |
是否隐藏详情页顶部信息。 |
hideBottomInfo |
boolean |
否 | false |
是否隐藏详情页底部短剧信息。 |
hideMore |
boolean |
否 | false |
是否隐藏详情页更多按钮。 |
hideLikeButton |
boolean |
否 | false |
是否隐藏详情页点赞按钮。 |
hideFavorButton |
boolean |
否 | false |
是否隐藏详情页收藏按钮。 |
topOffset |
number |
否 | -1 |
详情页顶部偏移,单位 px;-1 使用 SDK 默认适配,仅 Android 生效。 |
bottomOffset |
number |
否 | -1 |
详情页底部偏移,单位 px;-1 使用 SDK 默认适配,仅 Android 生效。 |
ShortDramaHomeOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
showChangeBtn |
boolean |
否 | true |
是否显示换一换按钮;当前仅 Android 生效。 |
showPageTitle |
boolean |
否 | true |
是否显示页面标题。 |
showBackBtn |
boolean |
否 | true |
是否显示返回按钮。 |
topOffset |
number |
否 | 0 |
顶部偏移,单位 px;当前仅 Android 生效。 |
topDramaId |
string |
否 | '0' |
置顶短剧 ID,不传或传 '0' 表示不指定。 |
freeEpisodeCount |
number |
否 | 1 |
进入详情播放页后的前置免费观看集数,范围 1-20。 |
unlockEpisodeCount |
number |
否 | 1 |
进入详情播放页后,每次激励视频可解锁的集数,范围 1-10。 |
unlockAdMode |
'sdk' \| 'custom' |
否 | 'sdk' |
解锁广告模式。 |
NotifyUnlockAdWillShowOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId |
string |
是 | unlockRequired 事件返回的任务 ID。 |
cpm |
string |
否 | 广告 CPM;建议传真实值,无法获取时可传空字符串 ''。 |
CompleteUnlockOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId |
string |
是 | unlockRequired 事件返回的任务 ID。 |
success |
boolean |
是 | 激励视频是否完整播放并允许本次解锁。 |
cpm |
string |
否 | 广告 CPM;建议传真实值,无法获取时可传空字符串 ''。 |
extra |
UTSJSONObject |
否 | 透传给短剧 SDK 的附加信息。 |
Result 与数据类型
ShortDramaListResult
| 字段 | 类型 | 说明 |
|---|---|---|
list |
Array<ShortDramaInfo> |
短剧列表。 |
extra |
UTSJSONObject |
原生 SDK 返回的附加数据,例如 hasMore。 |
ShortDramaInfo
| 字段 | 类型 | 说明 |
|---|---|---|
dramaId |
string |
短剧 ID。 |
title |
string |
标题。 |
coverUrl |
string |
封面图地址。 |
summary |
string |
简介。 |
categoryId |
number |
分类 ID。 |
categoryName |
string |
分类名称。 |
currentEpisode |
number |
当前推荐或续播集数。 |
totalEpisodes |
number |
总集数。 |
groupId |
string |
分组 ID。 |
unlockedEpisodeIndex |
number |
原生 SDK 返回的已解锁位置。 |
styleType |
number |
样式类型。 |
durationSeconds |
number |
时长,单位秒。 |
rawData |
UTSJSONObject |
原生 SDK 原始数据。 |
ShortDramaCategoryListResult / ShortDramaCategoryInfo
| 字段 | 类型 | 说明 |
|---|---|---|
list |
Array<ShortDramaCategoryInfo> |
分类列表。 |
extra |
UTSJSONObject |
原生 SDK 返回的附加数据。 |
ShortDramaCategoryInfo.name |
string |
分类名称。 |
ShortDramaCategoryInfo.rawData |
UTSJSONObject |
原始分类数据。 |
ShortDramaEpisodeUnlockStatusResult / ShortDramaEpisodeUnlockStatusInfo
| 字段 | 类型 | 说明 |
|---|---|---|
list |
Array<ShortDramaEpisodeUnlockStatusInfo> |
分集锁定状态列表。 |
extra |
UTSJSONObject |
原生 SDK 返回的附加数据。 |
ShortDramaEpisodeUnlockStatusInfo.episodeIndex |
number |
集数索引,按官方 SDK 返回值透传。 |
ShortDramaEpisodeUnlockStatusInfo.locked |
boolean |
是否锁定。 |
ShortDramaEpisodeUnlockStatusInfo.rawData |
UTSJSONObject |
原始数据。 |
ShortDramaError
| 字段 | 类型 | 说明 |
|---|---|---|
code |
number |
错误码。 |
message |
string |
错误描述。 |
detail |
UTSJSONObject |
原生 SDK 附加错误信息。 |
事件说明
播放、滑滑流、聚合页与广告事件
| 事件 | 常见 type |
说明 |
|---|---|---|
ShortDramaPlayEvent |
requestStart、requestSuccess、requestFail、play、pause、resume、completion、over、seek、progress、close、dramaSwitch |
详情播放页事件。 |
ShortDramaDrawEvent |
requestStart、requestSuccess、requestFail、load、play、pause、resume、completion、over、seek、progress、close |
滑滑流事件。 |
ShortDramaHomeEvent |
requestStart、requestSuccess、prepareFail、createFail、load、open、close |
聚合页生命周期事件。 |
ShortDramaAdEvent |
request、requestFail、show、clicked、rewardVerify、playStart、playComplete、skippedVideo |
广告相关事件。 |
事件对象通用字段:
| 字段 | 类型 | 说明 |
|---|---|---|
type |
string |
事件类型。 |
data |
UTSJSONObject |
事件附加数据。 |
code |
number |
错误码;成功为 0。 |
message |
string |
错误信息。 |
解锁事件
| 字段 | 类型 | 说明 |
|---|---|---|
type |
'unlockStart' \| 'unlockRequired' \| 'unlockEnd' |
解锁阶段。 |
taskId |
string |
解锁任务 ID。 |
drama |
ShortDramaInfo |
当前短剧信息。 |
code |
number |
错误码;成功为 0。 |
message |
string |
错误信息。 |
extra |
UTSJSONObject |
附加数据。 |
unlockRequired 只在 unlockAdMode: 'custom' 的业务侧自定义解锁流程中需要处理。
payload 约定
Android / iOS 会尽量统一补齐以下字段;原生 SDK 没有返回时字段可能为空:
| 字段 | 说明 |
|---|---|
data.source / extra.source |
事件来源:detail、draw、home、sdk、customUnlock、unlock。 |
data.dramaId |
当前短剧 ID。 |
data.episode / data.position |
当前集数、seek 位置等上下文。 |
data.current / data.progress |
播放进度;current 统一为毫秒,progress 为 0~1。 |
data.taskId / data.cpm / data.extra |
自定义解锁广告任务、价格和业务透传数据。 |
data.rawData / extra.rawData |
Android / iOS 原生 SDK 返回中无法标准化的原始数据。 |
业务逻辑建议优先使用标准字段,不要直接依赖 rawData 的平台私有结构。
平台差异
tt-djx-detail:Android / iOS 均支持内嵌详情页和无限下滑;topOffset、bottomOffset当前仅 Android 生效。openDraw():Android 支持hideDramaInfo和enableRefresh;当前 iOS SDK 的DJXDrawVideoVCConfig未暴露对应字段,因此这两个参数在 iOS 被忽略。openHome():Android / iOS 均为原生聚合页;iOS 使用DJXPlayletAggregatePageViewController,支持导航栏标题、返回按钮、置顶短剧和详情播放配置;showChangeBtn、topOffset当前仅 Android 生效。favorite()/unfavorite():iOS 收藏 / 取消收藏接口不使用episode。offXxx(callback?):Android / iOS 已统一为清空当前事件的全部监听。- 示例自定义激励视频广告位:Android 默认
953685911,iOS 默认953685880,均来自示例SDK_Setting.json,正式接入请替换。
错误码
| 错误码 | 说明 | 建议处理 |
|---|---|---|
-1 |
参数错误或原生 SDK 通用错误。 | 检查入参、短剧 ID、搜索关键词等是否正确。 |
-9001 |
UniAd 广告 SDK 初始化失败。常见于未勾选 GroMore,或未先调用广告 API 就初始化短剧 SDK。 | 在 HBuilderX / manifest.json 勾选穿山甲 GroMore(UniAd)模块,并先调用 uni.createRewardedVideoAd() 等广告 API,再调用 createShortDrama();同时检查广告模块配置和原生日志。 |
-7001 |
短剧 SDK / 广告 SDK 初始化或 prepare 失败。 | 检查 site_id、SDK 配置、依赖冲突和原生日志。 |
-7002 |
当前原生上下文不存在,例如 Android Activity 或 iOS UIViewController 为空。 |
确认在 App 真机 / 自定义基座页面生命周期内调用。 |
-7003 |
原生页面、控制器或 Widget 创建 / 打开失败。 | 查看原生日志,检查 SDK 版本、页面参数和宿主依赖。 |
-2001 |
解锁任务不存在。 | 检查 taskId 是否来自当前 unlockRequired 事件,是否重复回传。 |
推荐统一监听错误事件:
shortDrama.onError((err) => {
console.error('短剧插件错误', err.code, err.message, err.detail)
})
常见问题
默认 SDK 解锁需要传激励视频广告位 ID 吗?
不需要。默认 SDK 解锁广告位来自当前应用的 SDK_Setting.json。只有 unlockAdMode: 'custom' 时,才需要业务侧自行调用 uni.createRewardedVideoAd({ adpid }) 展示激励视频,并通过 completeUnlock() 回传结果。
SDK 解锁和自定义解锁如何选择?
unlockAdMode: 'sdk' 由插件使用 SDK_Setting.json 中的短剧解锁广告配置,接入简单,但业务侧不能调整广告请求逻辑。unlockAdMode: 'custom' 由业务侧通过 uni.createRewardedVideoAd({ adpid }) 请求广告,适用于已接入 UniAd 的项目;对应瀑布流必须包含穿山甲广告,并在广告曝光、奖励下发、用户跳过或广告失败时,通过 notifyUnlockAdWillShow() 和 completeUnlock() 回传解锁状态。
自定义解锁失败时如何排查?
先检查业务侧激励视频广告的加载或展示失败回调;广告未展示、用户跳过或广告失败时,必须使用当前 taskId 调用 completeUnlock({ taskId, success: false }) 结束任务。广告完整观看并发放奖励后,再调用 completeUnlock({ taskId, success: true })。同时确认 UniAd 瀑布流包含穿山甲广告且填充正常。
应用重装后为什么仍保留解锁记录?
接入登录并绑定用户数据时,解锁记录会随用户账号保留;未绑定账号时,短剧 SDK 的解锁记录可能与设备关联。业务侧的登录退出或账号切换逻辑需要自行处理。
自定义广告不回传 CPM 会怎样?
CPM 可以传空字符串 ''。但若 CPM 为空且平台未监测到合理广告展示,短剧 SDK 会强制切换为 SDK 直出广告,并屏蔽自定义解锁逻辑。应在广告真实曝光时调用 notifyUnlockAdWillShow({ taskId, cpm }),并在奖励下发时通过 completeUnlock({ taskId, success: true, cpm }) 回传同一广告的 CPM。
可以设置全部免费观看吗?
不可以。短剧仅支持广告解锁,不支持 IAP、会员付费或全量免费观看;免费集数由短剧 SDK 强校验。本插件的 freeEpisodeCount 公开参数范围为 1-20,不能通过该参数设置全量免费观看。
Android 运行时为什么会报错?
Android 平台运行时不要勾选 HBuilderX 的“清理构建缓存”选项,否则可能导致插件运行时报错。请取消该选项后重新打包运行。
页面销毁时需要做什么?
如果当前页面或模块不再使用短剧实例,建议调用 destroy() 解绑事件监听,避免重复回调。
出现初始化失败时优先检查什么?
优先检查穿山甲短剧能力是否开通、GroMore(UniAd)模块是否勾选、是否先调用了 uni.createRewardedVideoAd() 等广告 API、SDK_Setting.json 是否属于当前应用、包名 / Bundle ID 是否与 license 配置一致,以及原生日志中的 UniAd -9001 初始化错误。

收藏人数:
购买源码授权版(
试用
使用 HBuilder 导入示例项目
赞赏(0)
下载 1063
赞赏 4
下载 12765834
赞赏 1959
赞赏
京公网安备:11010802035340号