抖音开放平台Logo
开发者文档
控制台
  • 移动应用
  • open SDK 概述
  • open SDK 下载
  • open SDK 接入
  • 抖音分享
  • 抖音投稿发布
  • Android 发布
  • Android 分享支持 FileProvider 方式
  • Android 打开抖音拍摄页
  • iOS 发布
  • iOS 打开抖音拍摄器
  • 鸿蒙 发布&拍摄
  • 抖音名片
  • 抖音登录和授权
  • 常见问题
  • 网站应用
  • iOS 打开抖音拍摄器
    收藏
    我的收藏

    背景信息

    目前支持开发者直接拉起抖音拍摄页,使用抖音的能力进行视频发布。

    前提条件

      1.在使用这个功能之前,用户设备上需安装抖音。
      2.请确保您的抖音为 12.6.0 及以上版本。

    操作步骤

    第一步:准备环境

      1.进入开发者应用登记页面,向抖音短视频申请你的 clientkey 及相关权限,获取 clientkey。具体操作,请参见创建移动应用和网站应用。确保在应用的管理后台配置了正确包名等开发信息。
      2.通过 clientkey 为应用申请相关的权限,如打开抖音拍摄页(aweme.capture)等。
      3.等待审核通过后,即可使用相关的功能。

    第二步:接入

    引入 <DouyinOpenSDK/DouyinOpenSDKShare.h> 头文件。
    #import <DouyinOpenSDK/DouyinOpenSDKShare.h>
    构造分享到抖音的分享请求。
    DouyinOpenSDKShareRequest *req = [[DouyinOpenSDKShareRequest alloc] init];
    设置分享的类型,此属性必须设置。
    req.shareAction = DouyinOpenSDKShareTypeCapture;
    设置分享的上下文(可选),会在一次分享的过程中透传,可自定义一个字符串传入,或者从 OpenAPI 中申请 ShareID。可以从返回的 Resp 中的 state 中获取你在 request 中设置的 state。
    req.state = @“a47e57c6c559acb88a9569da66ee5f65e0f779c9”;
    如果传入的 state 字段是通过 OpenAPI 获取的 ShareID ,你还可以通过 ShareID 精准的追踪分享的视频是否成功,获取分享视频的数据,如点赞数、评论数等。有关 ShareID 的相关信息请参见 ShareID 的获取和使用

    第三步:发送请求

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

    错误码对应表:

    DouyinOpenSDKErrorCode
    errorCode
    描述
    DouyinOpenSDKSuccess
    0
    成功
    DouyinOpenSDKErrorCodeCommon
    -1
    通用错误类型<包括网络错误
    DouyinOpenSDKErrorCodeUserCanceled
    -2
    用户手动取消
    DouyinOpenSDKErrorCodeSendFailed
    -3
    发送失败
    DouyinOpenSDKErrorCodeAuthDenied
    -4
    权限错误
    DouyinOpenSDKErrorCodeUnsupported
    -5
    不支持
    如果错误码不能方便你定位具体出错的问题,你可以通过 respond.shareState 进行错误定位。需要接入 SDK 2.0.8 以上版本。
    以下为 Share State 信息的对应关系:
    DouyinOpenSDKShareRespState
    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
    获取资源错误资源可能不存在

    携带额外参数

    设置分享内容的标题

    目前支持设置标题,同时标题中支持插入话题和@用户。指定的话题会展现在发布页面,用户可自行删除该话题,该话题类型支持商业化话题和普通话题。发布后同抖音原生话题没有差别。
    // 添加标题 req.title = [DouyinOpenSDKShareTitle new]; req.title.text = @"title"; // 添加Hashtag. DouyinOpenSDKTitleHashtag *hashtag = [DouyinOpenSDKTitleHashtag new]; hashtag.text = @"hashtag"; hashtag.index = 0; [req.title.hashtags addObject:hashtag]; // 添加@用户 DouyinOpenSDKTitleMention *mention = [DouyinOpenSDKTitleMention new]; mention.openID = @"openID"; mention.index = 0; [req.title.mentions addObject:hashtag];
    注意:
      1.该能力从抖音 21.3.0 版本开始支持。
      2.标题总长度不超过 500。

    设置小程序锚点

    支持第三方分享内容至抖音时,携带相关小程序信息,成功发布视频后,在视频左下角带有小程序入口。
    // 设置分享携带小程序(小程序与应用必须为同一主体) NSMutableDictionary *m_dic = @{}.mutableCopy; m_dic[@"identifier"] = self.microAppId?:@""; m_dic[@"title"] = self.microAppTitle?:@""; m_dic[@"desc"] = self.microAppDesc?:@""; m_dic[@"startPageURL"] = self.microAppUrl?:@""; // 小程序,在分享的视频右下角显示抖音小程序入口, 非必须属性 req.extraInfo = @{ @"mpInfo" : m_dic.copy, // 若小程序与应用非同一主体,请使用推广任务,额外传递以下参数 @"micro_app_task_id" : @(123123), //小程序任务id @"agent_client_key" : @"xxx", //撮合中介clientKey };
    目前携带的小程序需跟应用为同一主体下才能挂载成功。如果非同主体请使用推广任务。只需要在之前的基础上传入额外的任务信息,目前该能力需要抖音版本大于 26.5 版本。小程序推广计划参数详情请点击这里

    设置 Poi 锚点

    目前支持第三方内容传入内容至抖音时携带 poi 信息,在发布页可以看到 poi 信息。
    成功发布视频后,在视频左下角带有 poi 入口。
    req.poiID = @"poiid";

    示例 Demo

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

    常见问题

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