iOS 分享

分享是指第三方 App 通过接入该功能,让用户可以从 App 分享信息到抖音。目前抖音支持的内容格式为单图、多图、单视频及多视频;申请权限后还可使用分享内容携带话题、分享内容携带小程序。

分享的过程是通过相册对资源进行跨进程通信。所以首先要确保您的 App 已经提供相册的权限。

准备工作

开始进行分享之前,已经默认你,完成了接入指南中的申请、配置过程。如果还未完成,请参考 抖音授权分享 SDK 入门指南完成配置。

实现一次分享的步骤如下:

第一步:引入头文件

引入 DouyinOpenSDKShare.h 这个头文件

#import "DouyinOpenSDKShare.h"

第二步:构造分享的请求

构造分享到抖音的分享请求

DouyinOpenSDKShareRequest *req = [[DouyinOpenSDKShareRequest alloc] init];

第三步:设置必传参数

设置分享的资源类型,只能是一个类型图片或者视频

req.mediaType = DouyinOpenSDKShareMediaTypeImage;
//Or
req.mediaType = DouyinOpenSDKShareMediaTypeVideo;

当资源类型为图片时, 默认生成图片视频. 可以通过 

req.imageAlbumMode = YES;

来设置生成图集.设置分享的资源标示,传入资源在系统相册的 local identifier 注意点:

  • 若分享的为图片,则图片的宽高比应满足:1/2.2<=宽高比<=2.2。
  • 若分享的为视频,视频分辨率应满足:1/2.2<=宽高像素比<=2.2,且总时长大于1s。
  • 若分享的为图片个数应该超过1个,图片个数最多12个,视频个数最多12个。
  • 带品牌logo或品牌水印的视频,会命中抖音的审核逻辑,有比较大的概率导致分享视频推荐降权处理/分享视频下架处理/分享账号被封禁处理。强烈建议第三方应用自行处理好分享内容中的不合规水印。
  • 分享的话题审核依旧遵循抖音的审核逻辑,强烈建议第三方谨慎拟定话题名称,避免强导流行为。

req.localIdentifiers = media; // NSArray

设置分享的目标页面

req.landedPageType = DouyinOpenSDKLandedPageClip // 剪辑页面
// or
req.landedPageType = DouyinOpenSDKLandedPageEdit // 编辑页面
// or
req.landedPageType = DouyinOpenSDKLandedPagePublish // 发布页面,现只支持单视频(需要抖音14.7版本以上)

第四步:设置你需要的可选参数

  1. 标题
  2. Hashtag
  3. 图片贴纸
  4. Hashtag贴纸
  5. 分享的上下文(state): 设置分享的上下文,会在一次分享的过程中透传,可自定义一个字符串传入,或者从OpenAPI中申请ShareID。可以从返回的 Resp 中的 state 中获取你在 request 中放设置的 state。如果传入的 state 字段是通过 OpenAPI 获取的 ShareID 你还可以通过 ShareID 精准的追踪分享的视频是否成功,获取分享视频的数据,如点赞数, 评论数等。具体有关 ShareID 的相关的请看 ShareID 的获取和使用
  6. 设置分享携带小程序:通过 Share Request 的扩展参数可以携带小程序信息,会在视频播放时展示。
    挂载小程序请先完成申请->申请及使用说明
    注意点: 使用小程序功能需要在开放平台内进行小程序绑定,链接 视频发布时会检查AppID和小程序ID的绑定关系,请确保您使用的小程序已经通过平台正确绑定。 如果您想接入小程序开发,请参考小程序开发
// 1.标题
req.title = [DouyinOpenSDKShareTitle new];
req.title = @"title";

// 2.Hashtag.
 DouyinOpenSDKTitleHashtag *hashtag = [DouyinOpenSDKTitleHashtag new];
 hashtag.text = "hashtag";
 hashtag.index = 0;
 [shareReq.title.hashtag addObject:hashtag];

// 3.图片贴纸
DouyinOpenSDKShareImageSticker *imageSticker = [[DouyinOpenSDKShareImageSticker alloc] init];
imageSticker.localIdentifier = identifier;
imageSticker.locationX = @0.5; //proportional position
imageSticker.locationY = @0.5; //proportional position
imageSticker.maxEdge = @300; // width
imageSticker.minimumScale = @0.01;
imageSticker.deleteable = YES;
imageSticker.editable = YES;
[req.imageStickers addObject:imageSticker];

// 4.Hashtag贴纸
DouyinOpenSDKShareHashtagSticker *hashtagSticker = [[DouyinOpenSDKShareHashtagSticker alloc] init];
hashtagSticker.text = @"hashtag";
hashtagSticker.index = 0;
[req.hashtagStickers addObject:hashtagSticker];

// 5.分享的上下文(state):
req.state = @“a47e57c6c559acb88a9569da66ee5f65e0f779c9”;

// 6.设置分享携带小程序
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};

第五步:发送请求

在设置好分享需要带入的信息之后,通过-[DouyinOpenSDKShareRequest sendShareRequestWithCompleteBlock:]发送分享请求,结果将通过 CompleteBlock 进行回调

[req sendShareRequestWithCompleteBlock:^(DouyinOpenSDKShareResponse * _Nonnull respond) {

NSString *alertString = nil;

if (respond.isSucceed) {

// Share Succeed

} else{

// Share failed

}

}];

分享结果说明: 如果分享失败可通过 respond.errCode 获取错误码对应枚举值 BDOpenPlatformErrorCode 通过 respond.errString 会返回报错信息。

错误码对应表:

BDOpenPlatformErrorCode

errorCode

描述

BDOpenPlatformSuccess

0

成功

BDOpenPlatformErrorCodeCommon

-1

通用错误类型 <包括网络错误>

BDOpenPlatformErrorCodeUserCanceled

-2

用户手动取消

BDOpenPlatformErrorCodeSendFailed

-3

发送失败

BDOpenPlatformErrorCodeAuthDenied

-4

权限错误

BDOpenPlatformErrorCodeUnsupported

-5

不支持

如果错误码不能方便你定位具体出错的问题,你可以通过 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

获取资源错误资源可能不存在

诚邀您对本文档易读易用性进行评价
好用
不好用