更新记录
1.0.0(2026-07-02)
- 新增自建聚合页推荐列表、观看记录、收藏列表和搜索 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 插件,为 uni-app x & uni-app App 端提供短剧内容集成能力,支持短剧列表、推荐、搜索、收藏、观看记录、详情播放页和激励视频解锁回传。
插件定位为 API-only:只提供短剧 API,不提供列表 UI 组件。业务侧可以完全自定义短剧首页、推荐位、搜索页、播放入口和广告解锁策略。
📖 目录
SDK版本信息
| 平台 | 版本号 | 支持状态 |
|---|---|---|
| iOS | 2.9.0.5 |
✅ 支持 |
| Android | 2.9.0.9 |
✅ 支持 |
| HarmonyOS | - | 后续支持 |
📚 推荐阅读:接入前请先在穿山甲后台开通短剧能力,下载当前应用对应的 SDK_Setting.json,并确认 uni-app 项目已勾选穿山甲 GroMore 模块。
重要提示
⚠️ 必须使用自定义基座或云打包真机运行,浏览器、普通小程序环境无法调用原生短剧 SDK。
⚠️ 插件不内置短剧列表 UI,业务侧需要自行绘制列表、搜索、收藏、观看记录等页面。
⚠️ 插件不会接收或保存激励视频广告位 ID,解锁广告请在业务侧使用 uni.createRewardedVideoAd({ adpid }) 自行创建。
⚠️ 必须在项目中勾选穿山甲 GroMore 模块,否则广告 SDK 相关能力可能无法正常初始化。
⚠️ 必须使用穿山甲官网/后台为当前应用生成的 SDK_Setting.json,不要直接使用示例或其他应用的配置文件。
⚠️ 初始化短剧 SDK 前会检查穿山甲广告 SDK 状态;如未初始化,会优先读取 SDK_Setting.json 的 init.site_id 并尝试初始化。
⚠️ 如项目中同时接入官方广告、GroMore 或其他穿山甲相关插件,请注意 SDK 版本和依赖冲突。
环境配置
前置条件
- 开通穿山甲短剧功能:在穿山甲 / 巨量引擎相关后台为当前应用开通短剧内容能力,并确认应用、包名、Bundle ID、短剧权限已审核通过。
- 勾选穿山甲 GroMore:在 HBuilderX /
manifest.json的 App 模块或广告相关配置中,勾选穿山甲 GroMore 模块;未勾选时广告 SDK 初始化和激励视频能力可能不可用。 - 下载
SDK_Setting.json:从穿山甲官网/后台下载当前应用对应的短剧 SDK 配置文件,文件内通常包含init.site_id、app_id、partner、secure_key、license_config等信息。 - 替换插件配置文件:将下载的
SDK_Setting.json替换到插件对应平台目录,不能使用示例应用或其他应用的配置文件。 - 准备激励视频广告位:如需自定义解锁广告,准备业务侧激励视频广告位 ID,即
uni.createRewardedVideoAd({ adpid })使用的adpid。 - 制作自定义基座或云打包:将插件放入
uni_modules/tt-short-djx后,重新制作自定义基座,或提交云打包后在真机验证。
Android平台配置
Android 依赖已在插件内自动配置,正常情况下无需业务侧手动添加 Maven 或 Gradle 依赖。
插件内置配置位置:
uni_modules/tt-short-djx/utssdk/app-android/config.json
uni_modules/tt-short-djx/utssdk/app-android/assets/SDK_Setting.json
请从穿山甲官网/后台下载 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 包名一致。- 后台已为该应用开通短剧功能,并已配置短剧相关广告位。
- HBuilderX /
manifest.json已勾选穿山甲 GroMore 模块。
也可以在创建实例时通过 adSiteId 传入媒体 ID,优先级高于 SDK_Setting.json 中的 init.site_id:
const shortDrama = createShortDrama({
adSiteId: '你的穿山甲媒体 ID'
})
iOS平台配置
iOS 依赖已在插件内通过 Pod 配置,正常情况下无需业务侧手动添加 Pod。
插件内置配置位置:
uni_modules/tt-short-djx/utssdk/app-ios/config.json
uni_modules/tt-short-djx/utssdk/app-ios/Resources/SDK_Setting.json
请从穿山甲官网/后台下载 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 一致。- 后台已为该应用开通短剧功能,并已配置短剧相关广告位。
- HBuilderX /
manifest.json已勾选穿山甲 GroMore 模块。
如打包时出现 Pod 拉取失败、SDK 版本冲突等问题,请优先检查本地 CocoaPods、HBuilderX 版本、项目中是否存在其他穿山甲相关插件。
快速开始
1. 导入插件
uni-app x 版本
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
export default {
onLoad() {
shortDrama = createShortDrama()
},
onUnload() {
shortDrama?.destroy()
shortDrama = null
}
}
uni-app 版本
import { createShortDrama } from '@/uni_modules/tt-short-djx'
const shortDrama = createShortDrama()
2. 获取推荐短剧
shortDrama.getRecommendedList(
{
page: 1,
pageSize: 20
},
(res) => {
console.log('推荐短剧列表', res.list)
},
(err) => {
console.error('推荐短剧获取失败', err)
}
)
3. 打开短剧播放页
shortDrama.open(
{
dramaId: 123456,
startEpisode: 1,
unlockEpisodeCount: 1,
freeEpisodeCount: 1
},
() => {
console.log('短剧播放页打开成功')
},
(err) => {
console.error('短剧播放页打开失败', err)
}
)
基础使用
创建短剧实例
建议在业务侧维护一个短剧单例,避免重复初始化原生 SDK。
import { createShortDrama } from '@/uni_modules/tt-short-djx'
export const shortDrama = createShortDrama({
// 可选,不传时读取 SDK_Setting.json 中的 init.site_id
adSiteId: '你的穿山甲媒体 ID'
})
获取推荐列表并打开播放页
import type {
ShortDramaInfo,
ShortDramaListResult
} from '@/uni_modules/tt-short-djx/utssdk/interface.uts'
shortDrama.getRecommendedList(
{
page: 1,
pageSize: 20
},
(res: ShortDramaListResult) => {
if (res.list.length === 0) return
const first = res.list[0] as ShortDramaInfo
shortDrama.open(
{
dramaId: first.dramaId,
startEpisode: first.currentEpisode > 0 ? first.currentEpisode : 1,
unlockEpisodeCount: 1,
freeEpisodeCount: 1
},
() => console.log('打开成功'),
(err) => console.error('打开失败', err)
)
},
(err) => console.error('获取推荐失败', err)
)
处理激励视频解锁
短剧触发解锁时,插件会通过 onUnlockEvent() 通知业务侧。业务侧播放自己的激励视频广告后,需要调用 completeUnlock() 回传结果。
import type { ShortDramaUnlockEvent } from '@/uni_modules/tt-short-djx/utssdk/interface.uts'
const rewardAd = uni.createRewardedVideoAd({
adpid: '你的激励视频广告位 ID'
})
shortDrama.onUnlockEvent((event: ShortDramaUnlockEvent) => {
if (event.type !== 'unlockRequired') return
const taskId = event.taskId
rewardAd.onClose((res) => {
shortDrama.completeUnlock({
taskId,
success: res.isEnded === true,
cpm: '0',
extra: {
isEnded: res.isEnded
} as UTSJSONObject
})
})
rewardAd.load(() => {
shortDrama.notifyUnlockAdWillShow({
taskId,
cpm: '0'
})
rewardAd.show()
})
})
💡 解锁建议:广告加载失败、展示失败、用户跳过广告时,也应调用 completeUnlock({ taskId, success: false }),避免当前解锁任务一直挂起。
功能介绍
获取全量短剧列表
shortDrama.getList(
{ page: 1, pageSize: 20, order: 'default' },
(res) => console.log(res.list),
(err) => console.error(err)
)
获取推荐短剧列表
shortDrama.getRecommendedList(
{ page: 1, pageSize: 20 },
(res) => console.log(res.list),
(err) => console.error(err)
)
查询短剧信息
// 查询单个短剧
shortDrama.getInfo(
{ dramaId: 123456 },
(res) => console.log(res.list[0]),
(err) => console.error(err)
)
// 查询多个短剧
shortDrama.getInfo(
{ dramaIds: [123456, 789012] },
(res) => console.log(res.list),
(err) => console.error(err)
)
获取观看记录
shortDrama.getWatchHistory(
{ page: 1, pageSize: 20 },
(res) => console.log(res.list),
(err) => console.error(err)
)
获取收藏列表
shortDrama.getFavorites(
{ page: 1, pageSize: 20 },
(res) => {
console.log('收藏列表', res.list)
console.log('附加信息', res.extra)
},
(err) => console.error(err)
)
搜索短剧
shortDrama.search(
{
keyword: '霸总',
fuzzy: true,
page: 1,
pageSize: 20
},
(res) => console.log(res.list),
(err) => console.error(err)
)
打开短剧播放页
shortDrama.open(
{
dramaId: 123456,
startEpisode: 1,
unlockEpisodeCount: 1,
freeEpisodeCount: 1
},
() => console.log('打开成功'),
(err) => console.error('打开失败', err)
)
短剧播放事件
shortDrama.onPlayEvent((event) => {
console.log('播放事件', event.type, event.data)
})
常见 type 可能包括:startPlay、pause、progress、playError 等,实际以原生短剧 SDK 返回为准。
短剧解锁事件
shortDrama.onUnlockEvent((event) => {
console.log('解锁事件', event.type, event.taskId)
})
| 事件类型 | 说明 |
|---|---|
unlockStart |
短剧 SDK 开始解锁流程。 |
unlockRequired |
需要业务侧展示激励视频广告。 |
unlockEnd |
短剧 SDK 结束解锁流程。 |
API参考
createShortDrama(options?)
创建短剧实例。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
adSiteId |
string |
否 | 穿山甲广告 SDK 媒体 ID;不传时读取 SDK_Setting.json 的 init.site_id。 |
ShortDrama 方法
| 方法 | 说明 |
|---|---|
getList(options, success, fail) |
获取全量短剧列表。 |
getRecommendedList(options, success, fail) |
获取推荐短剧列表。 |
getInfo(options, success, fail) |
按 dramaId 或 dramaIds 查询短剧信息。 |
getWatchHistory(options, success, fail) |
获取观看记录列表。 |
getFavorites(options, success, fail) |
获取收藏列表。 |
search(options, success, fail) |
搜索短剧。 |
open(options, success, fail) |
打开原生短剧播放页。 |
notifyUnlockAdWillShow(options) |
通知短剧 SDK:业务侧激励视频广告即将展示。 |
completeUnlock(options) |
通知短剧 SDK:业务侧解锁流程已完成。 |
destroy() |
销毁实例并解绑事件。 |
onLoad(callback) / offLoad(callback?) |
监听 / 取消监听加载成功事件。 |
onError(callback) / offError(callback?) |
监听 / 取消监听错误事件。 |
onPlayEvent(callback) / offPlayEvent(callback?) |
监听 / 取消监听播放事件。 |
onUnlockEvent(callback) / offUnlockEvent(callback?) |
监听 / 取消监听解锁事件。 |
ShortDramaListOptions
适用于 getList()、getRecommendedList()、getWatchHistory()、getFavorites()。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
page |
number |
否 | 1 |
页码,从 1 开始。 |
pageSize |
number |
否 | 20 |
每页数量。 |
order |
'default' \| 'reverse' |
否 | 'default' |
排序方式,部分接口可能由原生 SDK 决定是否生效。 |
ShortDramaInfoOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dramaId |
number \| string |
否 | 单个短剧 ID,和 dramaIds 二选一。 |
dramaIds |
Array<number \| string> |
否 | 多个短剧 ID,和 dramaId 二选一。 |
ShortDramaSearchOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
keyword |
string |
是 | - | 搜索关键词。 |
fuzzy |
boolean |
否 | true |
是否开启模糊搜索。 |
page |
number |
否 | 1 |
页码,从 1 开始。 |
pageSize |
number |
否 | 20 |
每页数量。 |
ShortDramaOpenOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
dramaId |
number \| string |
是 | - | 短剧 ID。 |
startEpisode |
number |
否 | 1 |
起播集数。 |
unlockEpisodeCount |
number |
否 | 1 |
每次激励视频可解锁的集数,范围 1-10。 |
freeEpisodeCount |
number |
否 | 1 |
前置免费观看集数,范围 1-20。 |
NotifyUnlockAdWillShowOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId |
string |
是 | unlockRequired 事件返回的任务 ID。 |
cpm |
string |
否 | 广告 CPM;不传按 '0' 处理。 |
CompleteUnlockOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId |
string |
是 | unlockRequired 事件返回的任务 ID。 |
success |
boolean |
是 | 是否允许本次解锁。 |
cpm |
string |
否 | 广告 CPM;不传按 '0' 处理。 |
extra |
UTSJSONObject |
否 | 透传给短剧 SDK 的附加信息。 |
ShortDramaListResult
| 字段 | 类型 | 说明 |
|---|---|---|
list |
Array<ShortDramaInfo> |
短剧列表。 |
extra |
UTSJSONObject |
原生 SDK 返回的附加数据,例如 hasMore。 |
ShortDramaInfo
| 字段 | 类型 | 说明 |
|---|---|---|
dramaId |
number |
短剧 ID。 |
title |
string |
标题。 |
coverUrl |
string |
封面图地址。 |
summary |
string |
简介。 |
categoryId |
number |
分类 ID。 |
categoryName |
string |
分类名称。 |
currentEpisode |
number |
当前推荐或续播集数。 |
totalEpisodes |
number |
总集数。 |
groupId |
number |
分组 ID。 |
unlockedEpisodeIndex |
number |
原生 SDK 返回的已解锁位置。 |
styleType |
number |
样式类型。 |
durationSeconds |
number |
时长,单位秒。 |
rawData |
UTSJSONObject |
原生 SDK 原始数据。 |
ShortDramaUnlockEvent
| 字段 | 类型 | 说明 |
|---|---|---|
type |
'unlockStart' \| 'unlockRequired' \| 'unlockEnd' |
解锁阶段。 |
taskId |
string |
解锁任务 ID。 |
drama |
ShortDramaInfo |
当前短剧信息。 |
code |
number |
错误码;成功为 0。 |
message |
string |
错误信息。 |
extra |
UTSJSONObject |
附加数据。 |
ShortDramaPlayEvent
| 字段 | 类型 | 说明 |
|---|---|---|
type |
string |
播放事件类型,例如 startPlay、pause、progress、playError。 |
drama |
ShortDramaInfo |
当前短剧信息;无上下文时可能为空。 |
data |
UTSJSONObject |
事件附加数据,例如播放进度、seek 位置。 |
code |
number |
错误码;成功为 0。 |
message |
string |
错误信息。 |
ShortDramaError
| 字段 | 类型 | 说明 |
|---|---|---|
code |
number |
错误码。 |
message |
string |
错误描述。 |
detail |
UTSJSONObject |
原生 SDK 附加错误信息。 |
错误处理
常见错误码
| 错误码 | 说明 | 建议处理 |
|---|---|---|
-1 |
参数错误或原生 SDK 通用错误。 | 检查入参、短剧 ID、搜索关键词等是否正确。 |
-7001 |
SDK 初始化失败。 | 检查 site_id、SDK 配置、依赖冲突和原生日志。 |
-2001 |
解锁任务不存在。 | 检查 taskId 是否来自当前 unlockRequired 事件,是否重复回传。 |
-1000 |
当前平台暂未实现或运行环境不可用。 | 确认是否在 App 真机 / 自定义基座中运行。 |
推荐写法
shortDrama.onError((err) => {
console.error('短剧插件错误', err.code, err.message, err.detail)
})
常见问题
1. 为什么浏览器运行时没有效果?
本插件依赖穿山甲原生短剧 SDK,只支持 App 端。请使用自定义基座或云打包后的真机 App 调试。
2. 插件是否提供短剧列表组件?
不提供。插件只提供 API,业务侧需要自行实现列表 UI、搜索 UI、收藏页、观看记录页和入口逻辑。
3. 激励视频广告位 ID 要传给插件吗?
不需要。插件不会保存 adpid。业务侧在 unlockRequired 事件中自行调用 uni.createRewardedVideoAd({ adpid }) 展示激励视频,然后把结果通过 completeUnlock() 回传。
4. adSiteId 和 adpid 有什么区别?
adSiteId:穿山甲广告 SDK 媒体 ID,用于广告 SDK / 短剧 SDK 初始化。adpid:激励视频广告位 ID,用于业务侧创建激励视频广告。
5. notifyUnlockAdWillShow() 必须调用吗?
建议调用。它用于通知短剧 SDK 业务侧激励视频广告即将展示。如果漏调,completeUnlock() 会尽量兜底,但推荐按流程显式调用。
6. 页面销毁时需要做什么?
如果当前页面或模块不再使用短剧实例,建议调用 destroy() 解绑事件监听,避免重复回调。

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