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 | |
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 };
设置 Poi 锚点
目前支持第三方内容传入内容至抖音时携带 poi 信息,在发布页可以看到 poi 信息。
成功发布视频后,在视频左下角带有 poi 入口。
req.poiID = @"poiid";
示例 Demo
常见问题
Q1 :拉起抖音立刻报错,错误码 respond.shareState 为 20003?
A: 一般都是包名错误,检查应用后台包名是否与当前应用包名是否匹配。clientKey 和 bundleID 要匹配。
Q2:用户分享完毕后没有跳回 App。
Q3:跳回 App 后,没有触发回调。
A:参考 iOS 接入第三部分,完成初始化 AppDelegate / SceneDelegate 部分。如果没有实现相关代码,SDK 拿不到抖音拉回 App 的 sc hema,无法得知前次分享发布结果,也就无法调用回调。