抖音开放平台Logo
开发者文档
控制台
  • 移动应用
  • open SDK 概述
  • open SDK 下载
  • open SDK 接入
  • 抖音分享
  • 安卓分享至私信/群
  • Android&iOS 转发内容到抖音
  • iOS分享至私信/群
  • 抖音投稿发布
  • 抖音名片
  • 抖音登录和授权
  • 常见问题
  • 网站应用
  • iOS分享至私信/群
    收藏
    我的收藏

    前提条件

      在开始分享之前,请确保您已经完成了 iOS 接入指南中的申请和配置过程。如果您还没有完成,请参考 iOS 接入进行接入。
      分享功能的实现过程是通过相册来进行跨进程通信,从而实现资源共享。因此,首先要确保您的 App 能够提供相册资源。
      部分参数和功能仅在最新版本的 SDK 和抖音中可用,请注意具体功能的版本要求。
      请将需要分享的视频/图片保存到系统相册中。届时传入的分享资源为系统相册的本地标识符(Local Identifier)。需要注意以下几点:
      本地标识符是唯一标识系统相册中每个资源的标识符。它是一个字符串,通常由数字和字母组成。
      在分享视频/图片时,请确保传入正确的本地标识符。如果传入的本地标识符不正确,可能会导致分享失败或分享的资源不正确。
      本地标识符可能会因为系统相册的更新或删除操作而发生变化。因此,如果你在分享之前修改或删除了系统相册中的资源,可能需要重新获取正确的本地标识符。
      如果你遇到了分享失败或分享的资源不正确的问题,请检查传入的本地标识符是否正确,并确保系统相册中的资源没有被修改或删除。
      带品牌 logo 或品牌水印的视频,会命中抖音的审核逻辑,有比较大的概率导致分享视频推荐降权处理/分享视频下架处理/分享账号被封禁处理。强烈建议第三方应用自行处理好分享内容中的不合规水印。
      分享的话题审核依旧遵循抖音的审核逻辑,强烈建议第三方谨慎拟定话题名称,避免强导流行为。

    操作步骤

    第一步:引入头文件

    引入<DouyinOpenSDK/DouyinOpenSDKShare.h>头文件:
    #import <DouyinOpenSDK/DouyinOpenSDKShare.h>

    第二步:构造分享的请求

    构造分享到抖音的分享请求:
    DouyinOpenSDKShareRequest *req = [[DouyinOpenSDKShareRequest alloc] init];

    第三步:设置分享图片或者链接参数

    分享图片

    设置分享的资源标示,传入资源在系统相册的 local identifier。
    NSArray<NSString *> * identifiers = @[@"identifiers1"]; // 获取系统相册localIdentifiers并赋值给identifiers req.localIdentifiers = identifiers;
    设置分享操作到抖音私信:
    req.shareAction = BDOpenPlatformShareTypeShareContentToIM;

    分享链接

    分享的链接需要通过审核。「管理中心」>「应用管理」>「应用详情」页中下图进行链接审核。
    注意以下代码示例内字段皆必传
    DouyinOpenSDKShareLink *link = [DouyinOpenSDKShareLink new]; link.linkURLString = @"https://open.douyin.com/platform"; link.linkTitle = @"抖音开放平台"; link.linkDescription = @"抖音开放平台,致力于打造抖音开放的生态系统,将从基础能力、内容、数据、服务等层面的开放,为开发者提供高效便捷的解决方案"; link.linkCoverURLString = @"https://sf3-cdn-tos.douyinstatic.com/obj/ttfe/open/imgs/logo-text.png"; req.shareLink = link;
    设置分享操作到抖音私信:
    req.shareAction = BDOpenPlatformShareTypeShareContentToIM;

    分享小程序

    注意:小程序需要跟第三方应用是同一主体下才能分享。
    DouyinOpenSDKShareMicroApp *shareMicroApp = [DouyinOpenSDKShareMicroApp new]; shareMicroApp.appId = @""; // 小程序的appid,必传 shareMicroApp.title = @""; //小程序卡片的title,必传 shareMicroApp.path = @""; //点击小程序落地页的path shareMicroApp.query = @""; //点击小程序落地页的query shareMicroApp.imageID = @""; //小程序卡片的封面图,通过OpenAPI获取,必传 req.shareMicroApp = shareMicroApp;
    设置分享操作到抖音私信:
    req.shareAction = BDOpenPlatformShareTypeShareContentToIM;

    第四步:发送请求

    在设置好分享需要带入的信息之后,,,-[DouyinOpenSDKShareRequest sendShareRequestWithCompleteBlock:]发送分享请求,结果将通过CompleteBlock进行回调。
    [req sendShareRequestWithCompleteBlock:^(BDOpenPlatformShareResponse * _Nonnull respond) { NSString *alertString = nil; if (respond.isSucceed) { // Share Succeed } else{ // Share failed } }];
    分享结果说明:如果分享失败可通过respond.errCode获取错误码对应枚举值BDOpenPlatformErrorCode 通过respond.errString会返回报错信息。

    错误码对应表:

    如果错误码不能方便你定位具体出错的问题,你可以通过 respond.shareState 进行错误定位。需要接入 SDK 2.0.8 以上版本。
    以下为 Share State 信息的对应关系:
    BDOpenPlatformShareRespState
    value
    描述
    BDOpenPlatformShareRespStateSuccess
    20000
    分享成功
    BDOpenPlatformShareRespStateUnknownError
    20001
    未知或者当前 SDK 版本未分类错误
    BDOpenPlatformShareRespStateParamValidError
    20002
    参数解析错误,获取到的资源和传入的资源类型不一致
    BDOpenPlatformShareRespStateSharePermissionDenied
    20003
    没有足够的权限进行操作,分享或授权之前请确认您的 App 有相关操作权限。可在 open.douyin.com 的管理中心查看你有哪些权限
    BDOpenPlatformShareRespStateUserNotLogin
    20004
    用户未登录
    BDOpenPlatformShareRespStateNotHavePhotoLibraryPermission
    20005
    抖音没有相册权限
    BDOpenPlatformShareRespStateNetworkError
    20006
    抖音网络错误
    BDOpenPlatformShareRespStateVideoTimeLimitError
    20007
    视频时长不符合限制
    BDOpenPlatformShareRespStatePhotoResolutionError
    20008
    图片资源分辨率不符合限制
    BDOpenPlatformShareRespTimeStampError
    20009
    时间戳检查失败
    BDOpenPlatformShareRespStateHandleMediaError
    20010
    处理照片资源出错
    BDOpenPlatformShareRespStateVideoResolutionError
    20011
    视频分辨率不符合限制
    BDOpenPlatformShareRespStateVideoFormatError
    20012
    视频格式不支持
    BDOpenPlatformShareRespStateCancel
    20013
    用户取消分享
    BDOpenPlatformShareRespStateHaveUploadingTask
    20014
    用户有未完成编辑的发布内容
    BDOpenPlatformShareRespStateSaveAsDraft
    20015
    用户将分享内容存储为了草稿或用户账号不允许发布视频
    BDOpenPlatformShareRespStatePublishFailed
    20016
    发布视频失败
    BDOpenPlatformShareRespStateMediaInIcloudError
    21001
    从 iCloud 同步资源出错
    BDOpenPlatformShareRespStateParamsParsingError
    21002
    传递的参数处理错误
    BDOpenPlatformShareRespStateGetMediaError
    21003
    获取资源错误资源可能不存在

    示例 Demo

    提供了一个完整的接入示例 Demo,你可以通过 Demo 直观地查看接入方法。

    常见问题

    Q1:起抖音立刻报错,错误码 respond.shareState 为 20003?
    A: 一般都是包名错误,检查应用后台包名是否与当前应用包名是否匹配。clientKey 和 bundleID 要匹配。
    Q2:用户分享完毕后没有跳回 App。
    A:请参考 iOS 接入 中二部分,在工程中正确配置URL Schemes
    Q3:跳回 App 后,没有触发回调。
    。A:请考 iOS 接入 中三部分,完成初始化 AppDelegate / SceneDelegate 部分。如果没有实现相关代码,SDK 拿不到抖音拉回 App 的 schema,无法得知前次分享发布结果,也就无法调用回调。