更新记录

1.2.7(2026-08-24)

调整插件信息

1.2.6(2026-08-24)

支持 iOS 平台通过 publishMediashareMediaToImfilePaths 传入系统相册 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 xuni-app。提供 初始化(register)授权登录(login)媒体投稿(publishMedia) 与私信分享。

推荐 API:使用 publishMedia() 投稿,或使用 shareMediaToIm()shareLinkToIm()shareMiniAppToIm() 分享私信。旧 share() 保留兼容,但新项目不应再组合 scenecontentTypeuseInternalPicker 等历史字段。业务通过 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() 调用同步完成。

环境配置

前置条件

  1. 抖音开放平台 创建移动应用,获取 ClientKey(代码里 registerappid 传此值)。
  2. 按平台在开放平台配置 包名、签名(Android)Bundle ID(iOS)、鸿蒙应用信息等。

iOS

  1. 编辑 uni_modules/tt-douyin-open/utssdk/app-ios/Info.plistDouyinAppIDURL TypesCFBundleURLSchemes 填写 ClientKeyLSApplicationQueriesSchemesdouyinopensdksnssdk1128 等(以插件内模板为准)。
  2. 使用媒体私信分享或投稿前,需在最终 App 的 Info.plist 添加相册权限:NSPhotoLibraryUsageDescription
  3. 在应用 生命周期 中接入插件 Hook(TTDouyinSDKHookProxy),保证抖音 SDK 能收到 冷启动与 URL 回调(与 uni 工程 manifest 配置一致即可)。

Android

在开放平台配置 签名与包名;工程需能拉取插件 config.json 中的 AwemeOpenSDK Maven 仓库。其余按 抖音 Android 集成文档 配置 FileProvider、回调 Activity 等。

HarmonyOS

  1. ohpm:项目根 harmony-configs/.ohpmrc 需能访问字节仓库,例如:
registry=https://ohpm.byted.org/repos/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
  1. harmony-configs/entry/src/main/module.json5querySchemes 包含抖音相关 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 成功前调用 loginshare 会失败并返回 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 成功时返回 codestatecode 应由服务端换取令牌。
fail / complete 回调函数 失败或结束回调。

publishMedia(options)(推荐)

sdk.publishMedia(options: TTDouyinPublishMediaOptions): void

固定执行媒体投稿,不需要传 scene: 'publish'contentType: 'media'

参数 必传 类型 说明
mediaType 'image' \| 'video' \| 'mix' 媒体类型。iOS 内置相册仅支持 imagevideomix 会返回不支持。
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:feedforwardDaily、编辑页或直达发布页;鸿蒙传非默认值会明确失败。
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.hashtagsJsonios/android.mentionsJsonios/android.stickersJson,分别对应 TTDouyinPublishHashtag[]TTDouyinPublishMention[]TTDouyinSticker[]。不要同时传同名数组字段;其中 iOS 必须使用 JSON 字符串,以避开 UTS 嵌套数组桥接问题。

私信分享(推荐)

shareMediaToIm(options)shareLinkToIm(options)shareMiniAppToIm(options) 分别对应媒体、链接、小程序卡片,避免旧接口中 scenecontentType 的非法组合。媒体参数的 filePaths 规则与投稿相同:iOS 可传 PHAsset.localIdentifier,不传则打开相册;Android 必传;鸿蒙当前明确不支持私信分享。

share(options)(兼容接口)

sdk.share(options: TTDouyinShareOptions): void
参数 必传 类型 说明
scene 'publish' \| 'im' publish 投稿或转发日常;im 私信,鸿蒙不支持。
contentType 'media' \| 'link' \| 'microApp' publish 仅允许 medialinkmicroApp 仅允许 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 基础投稿建议显式传 imagevideo,会直接过滤相册类型;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 小程序落地页参数。

TTDouyinShareTitleTTDouyinMusicParam

类型 参数 必传 说明
TTDouyinShareTitle title 投稿正文。
TTDouyinShareTitle shortTitle 图文正文上方短标题,需抖音 30.0+。
TTDouyinShareTitle markers hashtagmention 标记,content 为真实话题或 OpenID,start 为标题内位置。
TTDouyinMusicParam musicId 使用音乐时是 抖音侧真实音乐 ID;其它字段不参与当前 iOS 投稿请求。

进阶内容类型

以下类型全部可选。它们需要开放平台已开通对应能力,字段必须是真实数据;不要用占位值验证基础投稿。

类型 参数 必传 说明
TTDouyinShareMicroAppBubble appIdtitle 使用小程序气泡时是 已配置抖音小程序的 App ID 和展示标题。
TTDouyinShareMicroAppBubble descstartPageURL 小程序描述和完整落地页 URL。
TTDouyinShareBackground topColorbottomColorimageUrl 背景渐变色或网络背景图。
TTDouyinHashtagSticker name 使用该贴纸时是 抖音话题名称;locationXlocationY 为可选归一化坐标。
TTDouyinMentionSticker openId 使用该贴纸时是 被 @ 用户的真实 OpenID;坐标可选。
TTDouyinPoiSticker poiId 使用该贴纸时是 抖音侧真实 POI ID;坐标可选。
TTDouyinImageSticker path 使用该贴纸时是 Android 为本地图片路径;iOS 优先提供 localIdentifier。大小、时间、偏移、缩放和旋转均可选。

返回与错误

register 成功时返回空对象;login 成功时返回 { code, state }share 成功时返回空对象。失败回调统一为 IUniError,常用字段为 errCodeerrMsg;抖音 SDK 原始错误可从 cause.codecause.message 获取。


常用能力示例

抖音授权登录

流程:客户端拿到 code → 服务端用 codeaccess_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' 走抖音 投稿 / 发布 流程(标题、音乐、贴纸、publishModefeed / forwardDaily)、publishTargetPageedit / publish)、鸿蒙 harmonyLandingPageedit / 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 只能传 medialinkmicroApp 只能用于 im
mediaContent contentType: 'media' 时必传 - 投稿和私信媒体的媒体配置。
linkContent scene: 'im'contentType: 'link' 时必传 - 接口类型要求提供 URL、标题、描述和封面 URL。
microAppContent scene: 'im'contentType: 'microApp' 时必传 - appIdtitleimageID 必须是已配置小程序的真实数据。
mediaContent.filePaths Android / 鸿蒙媒体投稿或私信时必传 iOS 可选 Android 使用可读取的绝对路径或 content://;鸿蒙使用本地可读绝对路径。iOS 未传时打开系统相册,传入时必须是 PHAsset.localIdentifier
mediaContent.mediaType 可选,基础联调强烈建议传 image / video / mix 未传时由路径或相册选择结果推断。iOS 基础投稿请传 imagevideomix 当前不走 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 的全限定类名。
titlemusicParampoiIdmicroAppInfostickersbackgroundfeature 全部可选 - 进阶能力。首次联调不要传占位值;使用时需要真实业务数据、对应 Scope 和抖音客户端支持。
successfailcomplete 可选但建议传 - 抖音返回应用后才会收到最终结果;排障时请记录 errCodeerrMsgcause.codecause.message

平台行为简述:

平台 说明
Android / iOS 支持投稿发布publish + media)与 私信分享im)。Android 在从抖音返回应用后才会触发 success / fail,不要在调用 share 的同一同步流程里当作已发布完成。
HarmonyOS 支持投稿发布publish + media);im 会失败。需 redirectUrimediaContent.filePaths(本地可读路径,可用选图/选视频返回的路径)。

以下为 投稿发布私信分享 分端示例;uni-appuni-app x 仅差类型断言,逻辑相同。

投稿发布:Android / iOS(uni-app x)

AndroidmediaContent.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" });
  },
});

mediaTypemixfilePaths 需多个路径,具体条数与能力以抖音客户端与开放平台为准。


平台差异

平台 投稿 私信 媒体传递与回调
iOS 支持 feedforwardDaily 支持 filePaths 可不传,插件打开系统相册;传入时使用 PHAsset.localIdentifier。iOS 18 及以上不支持视频转发日常。
Android 支持 feedforwardDaily 支持 媒体 filePaths 必传,使用可读取绝对路径或 content:// URI;从抖音返回应用后才会收到最终回调。
HarmonyOS 支持投稿 不支持 filePathsredirectUri 必传;redirectUri 必须与 applink 配置一致。

错误码

常见 errCode(详见 utssdk/unierror.utsTTDouyinSDKErrors):

errCode 说明
101 未初始化或初始化失败
201 参数或场景不支持(如鸿蒙缺 redirectUri
202 缺少有效 mediaContent
203~206 媒体 / 链接 / 小程序参数问题
208 当前平台不支持该能力(如鸿蒙 im 分享)
209 / 210 客户端或抖音版本、媒体类型限制
999 其它错误;errMsg 已包含抖音 SDK 原始错误码与消息,结构化信息仍可从 cause.code / cause.message 读取

建议在 fail 回调中保留完整错误对象。errMsg 适合直接展示或记录,排障日志可同时记录 errCodeerrMsgcause.codecause.message

fail: (err) => {
  console.error('抖音 SDK 调用失败', err);
  console.error(err.errCode, err.errMsg, err.cause?.code, err.cause?.message);
}

常见问题

  1. 找不到插件方法
    使用 自定义基座 或正式包,不要用未包含本插件的标准基座。

  2. iOS 登录无响应
    检查 ClientKeyURL Scheme

  3. Android 授权或分享无回调
    核对开放平台 签名、包名 及文档要求的 回调 Activity 配置。

  4. 鸿蒙 ohpm 安装失败(ECONNRESET 等)
    多为本机访问 ohpm.byted.org 网络问题,需换网络、代理或放行域名;日志里 CaseSensitive 相关 DEBUG 可忽略。

  5. 鸿蒙提示 redirectUri
    module.json5applinks(uris) 及开放平台配置保持一致。

更多排障请对照 抖音开放平台文档


祝您开发愉快! 🎉

隐私、权限声明

1. 本插件需要申请的系统权限列表:

暂无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

暂无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无