更新记录
1.2.7(2026-08-24)
调整插件信息
1.2.6(2026-08-24)
支持 iOS 平台通过 publishMedia 和 shareMediaToIm 的 filePaths 传入系统相册 PHAsset.localIdentifier,可直接提交指定的相册媒体;未传时仍打开系统相册选择器。
1.2.5(2026-08-17)
修复 iOS平台投稿崩溃问题
查看更多平台兼容性
uni-app(5.08)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | 12 | 1.0.0 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.08)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 | 微信小程序 |
|---|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | 12 | 1.0.0 | × |
tt-douyin-open
抖音开放平台 UTS 原生插件,支持 uni-app x 与 uni-app。提供 初始化(register)、授权登录(login)、媒体投稿(publishMedia) 与私信分享。
推荐 API:使用 publishMedia() 投稿,或使用 shareMediaToIm()、shareLinkToIm()、shareMiniAppToIm() 分享私信。旧 share() 保留兼容,但新项目不应再组合 scene、contentType、useInternalPicker 等历史字段。业务通过 getTTDouyinSDK() 取单例。
📚 官方文档:抖音开放平台 - 移动应用
目录
版本信息
| 平台 | SDK 版本 | 支持状态 |
|---|---|---|
| iOS | 4.2.4 |
支持 |
| Android | 0.2.0.9 |
支持 |
| HarmonyOS | 0.0.5 |
支持 |
接入前必读
- 仅支持 App 真机环境;请使用自定义基座或云打包后的 App,浏览器和小程序环境不能调用本插件。
- 必须先在抖音开放平台创建移动应用,并使 ClientKey、Android 包名与签名、iOS Bundle ID、鸿蒙应用信息和当前安装包一致。
- 调用
login、投稿或私信前必须先成功调用register;iOS 还必须配置 ClientKey URL Scheme 和相册权限。 - 投稿、私信、小程序、音乐、POI、贴纸等能力受开放平台 Scope、业务资质和抖音客户端版本限制;首次联调仅使用基础媒体投稿,不要传占位业务数据。
success/fail是抖音完成或取消操作并返回应用后的结果,不表示share()调用同步完成。
环境配置
前置条件
- 在 抖音开放平台 创建移动应用,获取 ClientKey(代码里
register的appid传此值)。 - 按平台在开放平台配置 包名、签名(Android)、Bundle ID(iOS)、鸿蒙应用信息等。
iOS
- 编辑
uni_modules/tt-douyin-open/utssdk/app-ios/Info.plist:DouyinAppID、URL Types 的CFBundleURLSchemes填写 ClientKey;LSApplicationQueriesSchemes含douyinopensdk、snssdk1128等(以插件内模板为准)。 - 使用媒体私信分享或投稿前,需在最终 App 的
Info.plist添加相册权限:NSPhotoLibraryUsageDescription。 - 在应用 生命周期 中接入插件 Hook(
TTDouyinSDKHookProxy),保证抖音 SDK 能收到 冷启动与 URL 回调(与 uni 工程 manifest 配置一致即可)。
Android
在开放平台配置 签名与包名;工程需能拉取插件 config.json 中的 AwemeOpenSDK Maven 仓库。其余按 抖音 Android 集成文档 配置 FileProvider、回调 Activity 等。
HarmonyOS
- ohpm:项目根
harmony-configs/.ohpmrc需能访问字节仓库,例如:
registry=https://ohpm.byted.org/repos/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
harmony-configs/entry/src/main/module.json5:querySchemes包含抖音相关 scheme;skills / uris(https applinks) 与代码里redirectUri一致;声明 网络权限。完整模板请以 抖音鸿蒙 / OpenHarmony 官方说明 为准。
快速开始
1. 导入插件
uni-app x
import * as douyinSDK from "@/uni_modules/tt-douyin-open";
export default {
data() {
return {
douyin: null as douyinSDK.TTDouyinSDK | null,
};
},
onLoad() {
this.douyin = douyinSDK.getTTDouyinSDK();
this.initDouyinSDK();
},
methods: {
initDouyinSDK() {
/* 见下方「2. 初始化 SDK」 */
},
},
};
uni-app
import * as douyinSDK from "@/uni_modules/tt-douyin-open";
export default {
data() {
return { douyin: null };
},
onLoad() {
this.douyin = douyinSDK.getTTDouyinSDK();
this.initDouyinSDK();
},
methods: {
initDouyinSDK() {
/* 见下方「2. 初始化 SDK」 */
},
},
};
2. 初始化 SDK
uni-app x
initDouyinSDK() {
if (this.douyin == null) return;
this.douyin.register({
appid: "你的ClientKey",
success: () => {
console.log("抖音初始化成功");
},
fail: (err) => {
console.error("抖音初始化失败", err);
},
} as douyinSDK.TTDouyinRegisterOptions);
}
uni-app
initDouyinSDK() {
if (!this.douyin) return;
this.douyin.register({
appid: "你的ClientKey",
success: () => {
console.log("抖音初始化成功");
},
fail: (err) => {
console.error("抖音初始化失败", err);
},
});
}
API 参考
所有 API 均通过 getTTDouyinSDK() 返回的单例调用。register 成功前调用 login 或 share 会失败并返回 errCode: 101。
| API | 签名 | 平台 | 说明 |
|---|---|---|---|
| 获取实例 | getTTDouyinSDK() |
Android / iOS / HarmonyOS | 返回插件单例;不触发抖音客户端。 |
| 初始化 | sdk.register(options) |
Android / iOS / HarmonyOS | 注册 ClientKey;必须在登录、投稿或私信前完成。 |
| 授权登录 | sdk.login(options) |
Android / iOS / HarmonyOS | 拉起抖音授权,成功后返回授权 code。 |
| 媒体投稿 | sdk.publishMedia(options) |
Android / iOS / HarmonyOS | 推荐 API;投稿三端支持。 |
| 私信媒体 | sdk.shareMediaToIm(options) |
Android / iOS | 鸿蒙明确返回不支持。 |
| 私信链接 | sdk.shareLinkToIm(options) |
Android / iOS | 鸿蒙明确返回不支持。 |
| 私信小程序 | sdk.shareMiniAppToIm(options) |
Android / iOS | 鸿蒙明确返回不支持。 |
| 旧分享接口 | sdk.share(options) |
Android / iOS / HarmonyOS | 兼容旧版本,新项目不推荐使用。 |
getTTDouyinSDK()
const sdk = douyinSDK.getTTDouyinSDK();
无入参,返回 TTDouyinSDK。建议在页面或应用启动后保存该实例,并先调用 register。
register(options)
sdk.register(options: TTDouyinRegisterOptions): void
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
appid |
是 | string |
抖音开放平台的 ClientKey。必须与开放平台登记的 Android 包名及签名、iOS Bundle ID 或鸿蒙应用信息匹配。 |
success |
否 | (res) => void |
初始化成功回调。 |
fail |
否 | (err) => void |
初始化失败回调。 |
complete |
否 | (res) => void |
初始化结束回调,无论成功或失败都会调用。 |
login(options)
sdk.login(options: TTDouyinLoginOptions): void
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
state |
否 | string \| null |
业务请求标识;成功时原样返回,建议用于校验和关联请求。 |
permissions |
否 | string[] \| null |
授权 Scope 列表;未传时默认为 ['user_info']。申请的 Scope 须在开放平台开通。 |
redirectUri |
仅鸿蒙必传 | string \| null |
鸿蒙 applink 回调地址,必须与 module.json5 配置一致;Android / iOS 传 null。 |
callerLocalEntry |
否 | string \| null |
鸿蒙回调 UIAbility 名称;未传时为 EntryAbility。 |
success |
否 | (res) => void |
成功时返回 code 和 state;code 应由服务端换取令牌。 |
fail / complete |
否 | 回调函数 | 失败或结束回调。 |
publishMedia(options)(推荐)
sdk.publishMedia(options: TTDouyinPublishMediaOptions): void
固定执行媒体投稿,不需要传 scene: 'publish' 或 contentType: 'media'。
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
mediaType |
是 | 'image' \| 'video' \| 'mix' |
媒体类型。iOS 内置相册仅支持 image、video;mix 会返回不支持。 |
filePaths |
Android / 鸿蒙是;iOS 否 | string[] |
Android 为抖音可读取的绝对路径或 content:// URI;鸿蒙为本地可读路径;iOS 传入时必须为 PHAsset.localIdentifier,不传则直接打开系统相册。 |
shareId |
否 | string |
抖音 ShareID,用于关联 Webhook 投稿结果;不是打开投稿页的前置条件。 |
caption |
否 | TTDouyinPublishCaption |
跨端标题与话题;推荐通过 hashtagsJson 传 [{"name":"话题","start":0}],start 是插入原始 text 的位置。 |
musicId |
否 | string |
抖音侧真实音乐 ID。 |
publish |
否 | { mode?, targetPage? } |
iOS / Android:feed、forwardDaily、编辑页或直达发布页;鸿蒙传非默认值会明确失败。 |
ios / android / harmony |
条件可选 | 平台专属对象 | 只在对应平台生效;鸿蒙投稿必须提供 harmony.redirectUri。 |
success / fail / complete |
否但建议传 | 回调函数 | success 仅表示客户端接受了请求,最终发布结果应以 Webhook 为准。 |
iOS 基础投稿
sdk.publishMedia({
mediaType: 'video',
shareId: 'publish_' + Date.now(),
caption: {
text: '我的精彩视频',
hashtagsJson: '[{"name":"美好生活","start":0}]',
},
publish: { targetPage: 'edit' },
success: () => console.log('抖音已接受投稿请求'),
fail: (err) => console.error(err),
} as douyinSDK.TTDouyinPublishMediaOptions);
iOS 可通过其他原生插件取得
PHAsset.localIdentifier后传入filePaths,插件会直接提交给抖音 SDK;不要传本地文件路径。未传时插件会自行打开系统相册。用户从抖音取消后若 SDK 未返回完成事件,插件会在应用重新激活后以fail/complete结束本次请求,随后可发起下一次投稿。
Android / 鸿蒙基础投稿
sdk.publishMedia({
mediaType: 'video',
filePaths: ['/可读取的视频路径或content-uri'],
harmony: {
redirectUri: 'https://你的域名/抖音回调路径',
},
fail: (err) => console.error(err),
} as douyinSDK.TTDouyinPublishMediaOptions);
Android 忽略 harmony;鸿蒙必须提供其中的 redirectUri。实际跨端项目应按平台传入各自的媒体路径和鸿蒙配置。
所有平台的复杂嵌套数组均推荐使用 JSON 字符串:
caption.hashtagsJson、ios/android.mentionsJson、ios/android.stickersJson,分别对应TTDouyinPublishHashtag[]、TTDouyinPublishMention[]、TTDouyinSticker[]。不要同时传同名数组字段;其中 iOS 必须使用 JSON 字符串,以避开 UTS 嵌套数组桥接问题。
私信分享(推荐)
shareMediaToIm(options)、shareLinkToIm(options)、shareMiniAppToIm(options) 分别对应媒体、链接、小程序卡片,避免旧接口中 scene 与 contentType 的非法组合。媒体参数的 filePaths 规则与投稿相同:iOS 可传 PHAsset.localIdentifier,不传则打开相册;Android 必传;鸿蒙当前明确不支持私信分享。
share(options)(兼容接口)
sdk.share(options: TTDouyinShareOptions): void
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
scene |
是 | 'publish' \| 'im' |
publish 投稿或转发日常;im 私信,鸿蒙不支持。 |
contentType |
是 | 'media' \| 'link' \| 'microApp' |
publish 仅允许 media;link 和 microApp 仅允许 im。 |
mediaContent |
条件必传 | TTDouyinShareMediaContent |
contentType: 'media' 时必传。详见下方 TTDouyinShareMediaContent。 |
linkContent |
条件必传 | TTDouyinShareLinkContentIM |
im + link 时必传。 |
microAppContent |
条件必传 | TTDouyinShareMicroAppContentIM |
im + microApp 时必传。 |
publishMode |
否 | 'feed' \| 'forwardDaily' |
仅投稿媒体有效,默认 feed。 |
publishTargetPage |
否 | 'edit' \| 'publish' |
仅 feed 有效,默认 edit。 |
useNewForwardAbility |
否 | boolean |
仅 forwardDaily 有效;iOS 建议 true。 |
harmonyLandingPage |
否 | 'edit' \| 'record' |
仅鸿蒙投稿有效;record 需要申请 aweme.capture。 |
state |
否 | string |
请求关联标识;不是打开投稿页的前置条件。 |
redirectUri |
仅鸿蒙必传 | string \| null |
鸿蒙分享的 applink 回调地址。 |
callerLocalEntry / androidCallerLocalEntry |
否 | string \| null |
分别覆盖鸿蒙 UIAbility 或 Android 回调 Activity。 |
success / fail / complete |
否但建议传 | 回调函数 | 从抖音返回后接收结果;失败时记录完整错误对象。 |
Options
TTDouyinShareMediaContent
| 参数 | 类型 | 必传 | 默认值 | 说明 |
|---|---|---|---|---|
filePaths |
string[] |
Android / 鸿蒙必传;iOS 否 | - | Android 使用可读取的绝对路径或 content:// URI;鸿蒙使用本地可读路径;iOS 传入时必须是 PHAsset.localIdentifier,不传则打开系统相册。 |
mediaType |
'image' \| 'video' \| 'mix' |
否 | 由路径或相册结果推断 | iOS 基础投稿建议显式传 image 或 video,会直接过滤相册类型;mix 当前不支持 iOS 内置相册选择。 |
useInternalPicker |
boolean |
否 | - | 已废弃且不再控制行为。iOS 未传 filePaths 时自动打开系统相册;Android 当前使用 filePaths。新项目使用 publishMedia()。 |
title |
TTDouyinShareTitle |
否 | - | 投稿标题及话题 / @ 标记。 |
titleHashtagsJson / titleMentionsJson |
string |
否 | - | 复杂标题标记的 JSON 字符串;兼容 share() 时推荐使用。 |
musicParam |
TTDouyinMusicParam |
否 | - | 抖音侧已配置的真实 musicId。 |
poiId |
string |
否 | - | 抖音侧真实 POI 锚点 ID。 |
feature |
'note' |
否 | - | 笔记体裁,需要抖音 30.3+。 |
microAppInfo |
TTDouyinShareMicroAppBubble |
否 | - | 已配置小程序的真实信息;首次联调不要传占位值。 |
stickers |
TTDouyinSticker[] |
否 | - | 话题、@ 用户、POI 或图片贴纸;必须使用抖音可识别的真实业务数据。 |
stickersJson |
string |
否 | - | 贴纸 JSON 数组;兼容 share() 时推荐使用。 |
background |
TTDouyinShareBackground |
否 | - | 转发日常的背景色或背景图。 |
TTDouyinShareLinkContentIM
仅 scene: 'im' 且 contentType: 'link' 使用,以下字段均必传。
| 参数 | 类型 | 说明 |
|---|---|---|
linkURLString |
string |
要分享的链接 URL。 |
linkTitle |
string |
链接标题。 |
linkDescription |
string |
链接描述。 |
linkCoverURLString |
string |
链接封面 URL。 |
TTDouyinShareMicroAppContentIM
仅 scene: 'im' 且 contentType: 'microApp' 使用。
| 参数 | 类型 | 必传 | 说明 |
|---|---|---|---|
appId |
string |
是 | 已配置抖音小程序的真实 App ID。 |
title |
string |
是 | 小程序卡片标题。 |
imageID |
string |
是 | 通过抖音 OpenAPI 获取的小程序封面 ID。 |
path |
string |
否 | 小程序落地页路径。 |
query |
string |
否 | 小程序落地页参数。 |
TTDouyinShareTitle 与 TTDouyinMusicParam
| 类型 | 参数 | 必传 | 说明 |
|---|---|---|---|
TTDouyinShareTitle |
title |
是 | 投稿正文。 |
TTDouyinShareTitle |
shortTitle |
否 | 图文正文上方短标题,需抖音 30.0+。 |
TTDouyinShareTitle |
markers |
否 | hashtag 或 mention 标记,content 为真实话题或 OpenID,start 为标题内位置。 |
TTDouyinMusicParam |
musicId |
使用音乐时是 | 抖音侧真实音乐 ID;其它字段不参与当前 iOS 投稿请求。 |
进阶内容类型
以下类型全部可选。它们需要开放平台已开通对应能力,字段必须是真实数据;不要用占位值验证基础投稿。
| 类型 | 参数 | 必传 | 说明 |
|---|---|---|---|
TTDouyinShareMicroAppBubble |
appId、title |
使用小程序气泡时是 | 已配置抖音小程序的 App ID 和展示标题。 |
TTDouyinShareMicroAppBubble |
desc、startPageURL |
否 | 小程序描述和完整落地页 URL。 |
TTDouyinShareBackground |
topColor、bottomColor、imageUrl |
否 | 背景渐变色或网络背景图。 |
TTDouyinHashtagSticker |
name |
使用该贴纸时是 | 抖音话题名称;locationX、locationY 为可选归一化坐标。 |
TTDouyinMentionSticker |
openId |
使用该贴纸时是 | 被 @ 用户的真实 OpenID;坐标可选。 |
TTDouyinPoiSticker |
poiId |
使用该贴纸时是 | 抖音侧真实 POI ID;坐标可选。 |
TTDouyinImageSticker |
path |
使用该贴纸时是 | Android 为本地图片路径;iOS 优先提供 localIdentifier。大小、时间、偏移、缩放和旋转均可选。 |
返回与错误
register 成功时返回空对象;login 成功时返回 { code, state };share 成功时返回空对象。失败回调统一为 IUniError,常用字段为 errCode、errMsg;抖音 SDK 原始错误可从 cause.code 和 cause.message 获取。
常用能力示例
抖音授权登录
流程:客户端拿到
code→ 服务端用code换access_token→ 再取用户信息(见 开放平台服务端文档)。
uni-app x 示例
this.douyin!.login({
state: String(Date.now()),
permissions: ["user_info"],
redirectUri: "https://你的域名/你的path",
callerLocalEntry: "EntryAbility",
success: (res) => {
console.log(res.code, res.state);
},
fail: (err) => {
console.error(err);
},
} as douyinSDK.TTDouyinLoginOptions);
uni-app 示例
this.douyin.login({
state: String(Date.now()),
permissions: ["user_info"],
redirectUri: "https://你的域名/你的path",
callerLocalEntry: "EntryAbility",
success: (res) => {
uni.request({
url: "https://你的服务端/api/douyin/login",
method: "POST",
data: { code: res.code, state: res.state },
});
},
fail: (err) => {
uni.showToast({ title: "授权失败", icon: "none" });
},
});
抖音分享
统一调用:this.douyin.share(options),options 类型为 TTDouyinShareOptions。
能力概览:
- 投稿发布:三端均支持通过
scene: 'publish'+contentType: 'media'走抖音 投稿 / 发布 流程(标题、音乐、贴纸、publishMode(feed/forwardDaily)、publishTargetPage(edit/publish)、鸿蒙harmonyLandingPage(edit/record)等以interface.uts为准)。 - 私信分享:Android / iOS 支持
scene: 'im'(media/link/microApp);鸿蒙 当前不支持im。
完整必传条件、默认值和数据类型见上方 API 参考;下表汇总投稿媒体字段的组合限制。
参数必填与适用条件
调用任何分享能力前必须先成功调用 register({ appid }),且开放平台中的应用信息必须与当前安装包一致。下表中的“必传”表示插件调用所需;抖音客户端版本、开放平台 Scope 和业务资质仍可能限制最终能力。
| 参数 | 必传条件 | 可选值 / 默认值 | 说明 |
|---|---|---|---|
scene |
始终必传 | publish / im |
publish 为投稿或转发日常;im 为私信,鸿蒙暂不支持。 |
contentType |
始终必传 | media / link / microApp |
publish 只能传 media;link、microApp 只能用于 im。 |
mediaContent |
contentType: 'media' 时必传 |
- | 投稿和私信媒体的媒体配置。 |
linkContent |
scene: 'im' 且 contentType: 'link' 时必传 |
- | 接口类型要求提供 URL、标题、描述和封面 URL。 |
microAppContent |
scene: 'im' 且 contentType: 'microApp' 时必传 |
- | appId、title、imageID 必须是已配置小程序的真实数据。 |
mediaContent.filePaths |
Android / 鸿蒙媒体投稿或私信时必传 | iOS 可选 | Android 使用可读取的绝对路径或 content://;鸿蒙使用本地可读绝对路径。iOS 未传时打开系统相册,传入时必须是 PHAsset.localIdentifier。 |
mediaContent.mediaType |
可选,基础联调强烈建议传 | image / video / mix |
未传时由路径或相册选择结果推断。iOS 基础投稿请传 image 或 video;mix 当前不走 iOS 内置相册选择。 |
publishMode |
scene: 'publish' 时可选 |
feed(默认)/ forwardDaily |
feed 为投稿;forwardDaily 为转发到日常,单媒体。 |
publishTargetPage |
publishMode: 'feed' 时可选 |
edit(默认)/ publish |
edit 是稳定的基础验证入口;publish 依赖抖音客户端版本,建议仅单视频使用。 |
useNewForwardAbility |
publishMode: 'forwardDaily' 时可选 |
iOS 默认 true |
映射 iOS SDK 的 useNewShareAbility。iOS 18 及以上不支持视频转发日常。 |
state |
可选 | 任意业务字符串 | 用于关联回调和业务记录;不是打开投稿页的前置条件。 |
redirectUri |
鸿蒙登录或分享时必传 | Android / iOS 不传 | 必须与鸿蒙 module.json5 的 applink 配置一致。 |
androidCallerLocalEntry |
Android 可选 | 默认 包名.douyinapi.DouYinEntryActivity |
覆盖抖音回调 Activity 的全限定类名。 |
title、musicParam、poiId、microAppInfo、stickers、background、feature |
全部可选 | - | 进阶能力。首次联调不要传占位值;使用时需要真实业务数据、对应 Scope 和抖音客户端支持。 |
success、fail、complete |
可选但建议传 | - | 抖音返回应用后才会收到最终结果;排障时请记录 errCode、errMsg、cause.code、cause.message。 |
平台行为简述:
| 平台 | 说明 |
|---|---|
| Android / iOS | 支持投稿发布(publish + media)与 私信分享(im)。Android 在从抖音返回应用后才会触发 success / fail,不要在调用 share 的同一同步流程里当作已发布完成。 |
| HarmonyOS | 支持投稿发布(publish + media);im 会失败。需 redirectUri、mediaContent.filePaths(本地可读路径,可用选图/选视频返回的路径)。 |
以下为 投稿发布、私信分享 分端示例;uni-app 与 uni-app x 仅差类型断言,逻辑相同。
投稿发布:Android / iOS(uni-app x)
Android:mediaContent.filePaths 必填(本地绝对路径或 content://,需满足 FileProvider 与抖音可读要求)。
iOS:投稿会先走 系统相册选择;mediaContent 主要配 mediaType、标题、音乐、贴纸 等,其它字段见 interface.uts。
// Android:必须提供 filePaths
this.douyin!.share({
scene: "publish",
contentType: "media",
state: "可选",
publishMode: "feed",
publishTargetPage: "edit",
mediaContent: {
filePaths: ["/绝对路径/demo.jpg"],
mediaType: "image",
title: { title: "作品标题" },
},
success: () => {},
fail: (e) => {
console.error(e);
},
} as douyinSDK.TTDouyinShareOptions);
// iOS:以相册选图为主,filePaths 等见 interface.uts
this.douyin!.share({
scene: "publish",
contentType: "media",
state: "可选",
publishMode: "feed",
publishTargetPage: "edit",
mediaContent: {
mediaType: "image",
title: { title: "作品标题" },
},
success: () => {},
fail: (e) => {
console.error(e);
},
} as douyinSDK.TTDouyinShareOptions);
投稿发布:Android / iOS(uni-app)
// Android
this.douyin.share({
scene: "publish",
contentType: "media",
publishMode: "feed",
publishTargetPage: "edit",
mediaContent: {
filePaths: ["/绝对路径/demo.jpg"],
mediaType: "image",
title: { title: "作品标题" },
},
success: () => {},
fail: () => {},
});
// iOS
this.douyin.share({
scene: "publish",
contentType: "media",
publishMode: "feed",
publishTargetPage: "edit",
mediaContent: {
mediaType: "image",
title: { title: "作品标题" },
},
success: () => {},
fail: () => {},
});
私信分享:Android / iOS(uni-app x)
仅 scene: 'im',鸿蒙不支持。示例为 发单图/单视频给好友;链接、小程序见 linkContent / microAppContent。
this.douyin!.share({
scene: "im",
contentType: "media",
state: "可选",
mediaContent: {
filePaths: ["/绝对路径/单张图或单个视频"],
mediaType: "image",
},
success: () => {},
fail: (e) => {
console.error(e);
},
} as douyinSDK.TTDouyinShareOptions);
私信分享:Android / iOS(uni-app)
this.douyin.share({
scene: "im",
contentType: "media",
mediaContent: {
filePaths: ["/绝对路径/单张图或单个视频"],
mediaType: "image",
},
success: () => {},
fail: () => {},
});
投稿发布:鸿蒙(uni-app x)
this.douyin!.share({
scene: "publish",
contentType: "media",
state: "业务或开放平台 ShareID",
redirectUri: "https://你的域名/applink路径",
callerLocalEntry: "EntryAbility",
harmonyLandingPage: "edit",
mediaContent: {
filePaths: ["/本地绝对路径/demo.jpg"],
mediaType: "image",
},
success: () => {},
fail: (e) => {
console.error(e);
},
} as douyinSDK.TTDouyinShareOptions);
投稿发布:鸿蒙(uni-app)
this.douyin.share({
scene: "publish",
contentType: "media",
state: "业务或开放平台 ShareID",
redirectUri: "https://你的域名/applink路径",
callerLocalEntry: "EntryAbility",
harmonyLandingPage: "edit",
mediaContent: {
filePaths: ["/本地绝对路径/demo.jpg"],
mediaType: "image",
},
success: () => {
uni.showToast({ title: "已发起分享", icon: "none" });
},
fail: (e) => {
uni.showToast({ title: (e && e.errMsg) || "分享失败", icon: "none" });
},
});
mediaType 为 mix 时:filePaths 需多个路径,具体条数与能力以抖音客户端与开放平台为准。
平台差异
| 平台 | 投稿 | 私信 | 媒体传递与回调 |
|---|---|---|---|
| iOS | 支持 feed 与 forwardDaily |
支持 | filePaths 可不传,插件打开系统相册;传入时使用 PHAsset.localIdentifier。iOS 18 及以上不支持视频转发日常。 |
| Android | 支持 feed 与 forwardDaily |
支持 | 媒体 filePaths 必传,使用可读取绝对路径或 content:// URI;从抖音返回应用后才会收到最终回调。 |
| HarmonyOS | 支持投稿 | 不支持 | filePaths、redirectUri 必传;redirectUri 必须与 applink 配置一致。 |
错误码
常见 errCode(详见 utssdk/unierror.uts 中 TTDouyinSDKErrors):
| errCode | 说明 |
|---|---|
| 101 | 未初始化或初始化失败 |
| 201 | 参数或场景不支持(如鸿蒙缺 redirectUri) |
| 202 | 缺少有效 mediaContent |
| 203~206 | 媒体 / 链接 / 小程序参数问题 |
| 208 | 当前平台不支持该能力(如鸿蒙 im 分享) |
| 209 / 210 | 客户端或抖音版本、媒体类型限制 |
| 999 | 其它错误;errMsg 已包含抖音 SDK 原始错误码与消息,结构化信息仍可从 cause.code / cause.message 读取 |
建议在 fail 回调中保留完整错误对象。errMsg 适合直接展示或记录,排障日志可同时记录 errCode、errMsg、cause.code、cause.message:
fail: (err) => {
console.error('抖音 SDK 调用失败', err);
console.error(err.errCode, err.errMsg, err.cause?.code, err.cause?.message);
}
常见问题
-
找不到插件方法
使用 自定义基座 或正式包,不要用未包含本插件的标准基座。 -
iOS 登录无响应
检查 ClientKey、URL Scheme。 -
Android 授权或分享无回调
核对开放平台 签名、包名 及文档要求的 回调 Activity 配置。 -
鸿蒙 ohpm 安装失败(ECONNRESET 等)
多为本机访问ohpm.byted.org网络问题,需换网络、代理或放行域名;日志里 CaseSensitive 相关 DEBUG 可忽略。 -
鸿蒙提示 redirectUri
与module.json5中 applinks(uris) 及开放平台配置保持一致。
更多排障请对照 抖音开放平台文档。
祝您开发愉快! 🎉

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