更新记录
1.2.2(2026-09-30)
统一短剧 ID 与分组 ID 为字符串类型,避免长整型精度丢失
1.2.1(2026-09-30)
修复已知问题
1.2.0(2026-09-30)
新增 可覆盖短剧原生页面的 Loading、Toast 和确认提示框 API
查看更多平台兼容性
uni-app(5.07)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | √ | 1.0.0 | 7.0 | 1.0.0 | 12 | 1.0.0 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.07)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 7.0 | 1.0.0 | 12 | 1.0.0 | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
tt-short-djx
穿山甲短剧 SDK UTS 插件,为 uni-app x / uni-app App 端提供短剧内容 API 和原生页面接入能力。
支持能力:
- 短剧列表、推荐、分类、搜索、短剧信息查询。
- 观看记录、收藏列表、清空观看记录。
- 点赞 / 取消点赞,收藏 / 取消收藏。
- 分集解锁状态查询。
- 业务账号解锁记录绑定、解绑和绑定状态查询。
- 原生详情播放页、滑滑流
openDraw()、原生聚合页openHome()。 - 默认 SDK 解锁和业务侧自定义激励视频解锁回传。
- 可覆盖短剧原生页面的 Loading、Toast 和确认提示框。
需要页面内嵌组件?
本插件通过 API 打开独立的原生详情页、滑滑流和聚合页,不提供页面内嵌组件。如果需要将滑滑流或聚合页嵌入普通页面、tabBar 子页面或指定尺寸的容器中,请根据项目技术栈选择组件插件:
接入前必读
- 仅支持 App 真机环境;请使用自定义基座或云打包后的 App 调试,浏览器和小程序环境不能调用本插件。
- HBuilderX 版本与插件版本必须匹配:HBuilderX
5.25及以上版本推荐使用插件1.2.1;HBuilderX5.25之前版本请使用1.1.6之前的插件版本。不同版本的 iOS Pod 依赖不同,混用可能导致云打包或本地打包依赖冲突。 - 应用须先在穿山甲 / 巨量引擎后台开通短剧内容能力,并在 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.25 及以上 |
1.2.1 |
短剧 ID 统一为字符串,支持原生弹窗、新版 iOS Pod 依赖及 Android 短剧 SDK 3.0.0.2 |
5.25 之前 |
1.1.6 之前的版本 |
使用旧版 iOS Pod 依赖 |
请勿跨表混用 HBuilderX 与插件版本,否则可能因 iOS Pod 依赖版本不同导致打包冲突。
1.2.1 升级注意
1.2.1 统一了跨平台 ID 类型:dramaId、dramaIds、topDramaId 以及返回数据中的 dramaId、groupId 均为字符串。升级后请将数字字面量改为字符串,例如 dramaId: '123456'、topDramaId: '0',并同步调整业务模型、缓存字段和相等比较;不要再将短剧 ID 转为 number,以免长整型 ID 丢失精度。
| 平台 | SDK 版本 | 支持状态 |
|---|---|---|
| iOS | 2.9.0.6 |
支持 |
| Android | 3.0.0.2 |
支持 |
配置文件
完成“接入前必读”的检查后,将当前应用对应的 SDK_Setting.json 放入插件目录。
Android 配置
将 Android 应用对应的 SDK_Setting.json 放到:
uni_modules/tt-short-djx/utssdk/app-android/assets/SDK_Setting.json
重点检查:
init.site_id是当前 Android 应用的穿山甲媒体 ID。license_config.PackageName与项目 Android 包名一致。- 后台已为该应用开通短剧功能,并配置短剧相关广告位。
iOS 配置
将 iOS 应用对应的 SDK_Setting.json 放到:
uni_modules/tt-short-djx/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:UniAd 激励视频广告位 ID,不传给createShortDrama()。SDK 广告和自定义广告模式都需要先通过它创建一次广告实例以初始化 UniAd/GroMore;仅自定义广告模式需要业务侧主动加载、展示并处理广告回调。
创建实例时可显式传入 adSiteId:
const shortDrama = createShortDrama({
adSiteId: '你的穿山甲媒体 ID'
})
快速开始
导入并创建实例
import { createShortDrama } from '@/uni_modules/tt-short-djx'
import type { ShortDrama } from '@/uni_modules/tt-short-djx/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 传给短剧插件,但仍需提前调用一次 uni.createRewardedVideoAd({ adpid }) 初始化 UniAd/GroMore。
常用能力示例
列表、分类、搜索
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。 |
ShortDrama 方法
| 方法 | 说明 |
|---|---|
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 业务侧解锁流程已完成。 |
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) 只移除传入的监听,省略 callback 或传 null 时清空该事件的全部监听。
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' |
解锁广告模式。 |
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 的平台私有结构。rawData 和 extra 是高级透传字段,结构可能随平台或原生 SDK 版本变化,不属于稳定的跨平台协议。
平台差异
openDraw():Android 支持hideDramaInfo和enableRefresh;当前 iOS SDK 的DJXDrawVideoVCConfig未暴露对应字段,因此这两个参数在 iOS 被忽略。openHome():Android / iOS 均为原生聚合页;iOS 使用DJXPlayletAggregatePageViewController,支持导航栏标题、返回按钮、置顶短剧和详情播放配置;showChangeBtn、topOffset当前仅 Android 生效。favorite()/unfavorite():iOS 收藏 / 取消收藏接口不使用episode。offXxx(callback?):传 callback 时精确移除该监听;省略 callback 或传null时清空该事件的全部监听。
错误码
| 错误码 | 说明 | 建议处理 |
|---|---|---|
-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,不需要把 adpid 传给短剧插件;但在创建短剧实例前,仍需调用一次 uni.createRewardedVideoAd({ adpid }) 初始化 UniAd/GroMore,且不需要主动展示。只有 unlockAdMode: 'custom' 时,业务侧才需要自行加载和展示激励视频,并通过 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,不能通过该参数设置全量免费观看。
页面销毁时需要做什么?
如果当前页面或模块不再使用短剧实例,建议调用 destroy() 解绑事件监听,避免重复回调。
出现初始化失败时优先检查什么?
优先检查穿山甲短剧能力是否开通、GroMore(UniAd)模块是否勾选、是否先调用了 uni.createRewardedVideoAd() 等广告 API、SDK_Setting.json 是否属于当前应用、包名 / Bundle ID 是否与 license 配置一致,以及原生日志中的 UniAd -9001 初始化错误。

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(1)
下载 1009
赞赏 4
下载 12649649
赞赏 1953
赞赏
京公网安备:11010802035340号