更新记录

1.0.6(2024-09-25)

抖音iOS端SDK更新到v4.1.16​

1.0.5(2024-09-09)

安卓端快手SDK更新至:3.7.2

1.0.4(2024-07-11)

更新抖音SDK,分布抖音新增shareParam参数等。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


抖音Android和iOS移动端SDK原生集成(第三方授权登录分享)插件

1、首先到 抖音开发平台申请应用 https://open.douyin.com/

2、填写包名获得应用的 clientKey .

3、需要在配置文件 manifest.json 原生插件设置处 勾选云端插件,填写 clientKey 打包应用后才生效。

插件使用介绍

iOS端需要在项目的配置文件 manifest.json 设置 ios 白名单 和 urlschemes

 "ios" : {
    //aw5hkvxxxxxxxxx抖音iOS的clientKey,ks68567xxxxxxxx快手iOS的appId
    "urltypes" : "aw5hkvxxxxxxxxx,ks68567xxxxxxxx",
    "urlschemewhitelist" : "douyinopensdk,douyinliteopensdk,douyinsharesdk,snssdk1128,snssdk2329,snssdk1112,kwai,kwaiAuth2,kwaiopenapi,KwaiBundleToken,kwai.clip.multi,KwaiSDKMediaV2,ksnebula"
}

引入抖音插件

const sdkShortvideo = uni.requireNativePlugin('Shortvideoplatform-Sdk')

1、抖音授权登录

auth() {
    sdkShortvideo.onAuthorize({
        scope: "user_info",
        state: "" //用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
    }, function(res) {
        console.log("授权结果:" + JSON.stringify(res));
        //res.errCode  //OK = 0 授权成功, ERROR_UNKNOW = -1 未知错误, ERROR_CANCEL = -2 用户手动取消...
        //res.errString
        //res.authCode   //临时票据code,用来换取access_token
        //res.state      //第三方程序发送时用于表示其请求的唯一性标志,由第三方程序调openApi.authorize(request)时传入,由抖音终端回传。
        //res.grantedPermissions    //第三方通过用户授权取得的授权域
    });
},

抖音授权登录官方文档

2、发布抖音

    sdkShortvideo.onShare({
        isChooseImage: true, //打开相册选择图片视频等(只支持iOS)
        maxCount: 12, //相册选择图片视频最大数量(默认12)
        shareMediaType: "ShareMediaTypeImage", //可选有参数:ShareMediaTypeVideo、ShareMediaTypeImage
        // imageAlbumMode: true, //当shareMediaType==ShareMediaTypeImage默认生成图片视频。如果要设置生成图集,把imageAlbumMode设置为true
        state: "",
        // imagePaths: [],
        /*,
        shareToPublish:true,//直接分享到抖音发布页,分享到发布页目前只支持单视频发布。
        microAppInfo:{
            appId:"ttef9b992670b151ec",
            appTitle:"小程序title",
            appUrl:"pages/movie/index?utm_source=share_wxapp&cityId=10&cityName=%E4%B8%8A%E6%B5%B7",
            description:"小程序描述"
        }, //可选,分享内容携带小程序
        extras:{
            "micro_app_task_id":"7265506428227xxxxxx",
            "agent_client_key":"xxxxxxxxxxxxxxxx"
        },//挂载小程序时必需要配置
        hashtags:[
            "话题"
        ],//可选, 分享内容携带话题
        shareToType: 1, //可选 1为发日常
        feature:'note', //可选(体裁 目前有以下取值:note 分享为笔记体裁)*/
        shareParam:{
            poiId: 'xxx', //poi 锚点数据,出现在发布页。
            musicParamObject: {
                musicId: 'xxx',
                start: 1,
                musicStartTime: 0
            },//背景音乐数据,可以设置图片或者视频的背景音乐
            titleObject: {
                title: '分享标题',
                shortTitle: '分享短标题',
                hashtagTitleMarker: [
                    {
                        name: '直接插入标题中hashtag',
                        start: 2
                    }
                ],
                mentionTitleMarker: [
                    {
                        openId: 'xxx', //@用户对应的openid
                        start: 3
                    }
                ]
            }, //标题,总长度有限制,过长会被截断
            stickersObject: {
                hashtagSticker:[
                    {
                        name: 'xxx',
                        locationX: 1, //iOS端用到
                        locationY: 1, //iOS端用到
                    }
                ], //>话题贴纸
                customSticker:[
                    {
                        path: "xx", //文件路径 (安卓端传平台绝对路径,转换使用plus.io.convertLocalFileSystemURL(),iOS端可通过调用保存到相册的接口onSaveMultiMediaToPhotosAlbum()或onSaveImageToPhotosAlbum方法时返回)
                        startTime: 0, //android端用到
                        endTime: 1000 * 1000,//android端用到
                        normalizedSizeX: 0.5,  //android端用到 归一化大小,宽除以屏幕宽
                        normalizedSizeY: 0.5, //android端用到 归一化大小,高各除以屏幕高
                        scale: 1, //缩放
                        rotate: 0, //旋转 android端用到
                        offsetX: 0.5,  //横纵向偏移,贴纸中心点在归一化屏幕中的位置
                        offsetY: 0.5,  //横纵向偏移,贴纸中心点在归一化屏幕中的位置

                        maxEdge: 2, //iOS端用到
                        deleteable: true, //iOS端用到
                        editable: true, //iOS端用到
                    }
                ], //>自定义图片贴纸
                mentionSticker:[
                    {
                        openId: "xxx", //@用户的openid,用户授权后可以获取到
                        locationX: 1, //iOS端用到
                        locationY: 1, //iOS端用到
                    }
                ], //>@用户贴纸
                poiSticker:[
                    {
                        poiId: "xxx", //poiId
                        locationX: 1, //iOS端用到
                        locationY: 1, //iOS端用到
                    }
                ], //>Poi贴纸
                quickFlashSticker:[
                    textInfo: "xxx",
                    stickerId: "xxx",
                    locationX: 1,
                    locationY: 1,
                ], //>挑战贴纸
            }, //贴纸
            dailyScale: 0.58, //日常内容缩放尺度
            shareDailyBGBaseColor: '#ff200d', //android端用到 日常背景的基准色
            shareDailyBGComplementaryColor: '#ff200d', //android端用到 日常背景的渐变色
            topColor: '#ff200d', //iOS端用到 渐变色背景,顶部颜色
            bottomColor: '#ff200d', //iOS端用到 渐变色背景,底部颜色
            shareDailyBGUrl: '', //设置日常的背景图片
            privateStatus: 'Public', //视频发布后公开范围。可取值有:Public 所有人可见(公开)Private 仅自己可见(私密)Friends  朋友可见
            downloadType: 'AllowDownload', //视频发布后是否允许下载。可取值有:AllowDownload 允许下载  DenyDownload不允许下载
            shareDailyH5Path: 'http://xxx', //H5链接,需要在开平aweme.share scope下配置
        } //可选,新版分享携带参数
    }, function(res) {
        console.log(res);
        //res.errorCode     //参照官方文档说明
        //res.subErrorCode  //参考官方文档说明
        //res.errorMsg
        //res.state
    });

发布抖音官方文档

3、抖音分享到联系人

sdkShortvideo.onShareContentToIM({
    // isChooseImage: true, //打开相册选择图片视频等(只支持iOS)
    imagePaths: media, //单图
    /*urlObject: { //链接
        url: "https://open.douyin.com/platform", // 链接(必填)
        title: "抖音开放平台", //title(必填)
        discription: "抖音开放平台,致力于打造抖音开放的生态系统", //描述(必填)
        coverUrl: "https://sf3-cdn-tos.douyinstatic.com/obj/ttfe/open/imgs/logo-text.png" //封面图(远程图片)(必填)    
    }, ///imagePaths和urlObject二选其一*/
    state: ""
}, function(res) {
    console.log(res);
    //res.errorCode     //参照官方文档说明
    //res.subErrorCode  //参考官方文档说明
    //res.errorMsg
    //res.state
});

分享给抖音好友或群官方文档

4、打开抖音拍摄器

sdkShortvideo.onOpenCapture({
    state: ""
    /*,
    microAppInfo:{
        appId:"ttef9b992670b151ec",
        appTitle:"小程序title",
        appUrl:"pages/movie/index?utm_source=share_wxapp&cityId=10&cityName=%E4%B8%8A%E6%B5%B7",
        description:"小程序描述"
    }, //可选,分享内容携带小程序
    extras:{
        "micro_app_task_id":"7265506428227xxxxxx",
        "agent_client_key":"xxxxxxxxxxxxxxxx"
    },//挂载小程序时必需要配置
    hashtags:[
        "话题"
    ],//可选, 分享内容携带话题//*/
    shareParam:{
        poiId: 'xxx', //poi 锚点数据,出现在发布页。
        titleObject: {
            title: '分享标题',
            shortTitle: '分享短标题',
            hashtagTitleMarker: [
                {
                    name: '直接插入标题中hashtag',
                    start: 2
                }
            ],
            mentionTitleMarker: [
                {
                    openId: 'xxx', //@用户对应的openid
                    start: 3
                }
            ]
        }, //标题,总长度有限制,过长会被截断

    } //可选,携带额外参数
}, function(res) {
    console.log(res); //参考官方文档说明
    //res.errorCode     //参照官方文档说明
    //res.subErrorCode  /
    //res.errorMsg
    //res.state
});

打开抖音拍摄器官方文档

快手Android和iOS移动端SDK原生集成(第三方授权登录分享)插件

快手申请注册流程快手官网地址 快手iOS接入快手Android接入

引入快手插件

const sdkShortvideo = uni.requireNativePlugin('Shortvideoplatform-Sdk')

快手Android端配置

//安卓端必须调用onSetKwaiOpenSdkConfig方法初始化
//在生命周期onLoad()配置Android相关
onLoad() {
    if (uni.getSystemInfoSync().platform == 'android') {
        //快手端设置平台功能的配置选项(仅android有效)
        sdkShortvideo.onSetKwaiOpenSdkConfig({
            goToMargetAppNotInstall:true,// 应用未安装,是否自动跳转应用市场
            goToMargetAppVersionNotSupport:true,// 应用已安装但版本不支持,是否自动跳转应用市场
            setNewTaskFlag:true,// 设置启动功能页面是否使用新的页面栈
            setClearTaskFlag:true,//设置启动功能页面是否清除当前页面栈,当isSetNewTaskFlag为true时生效
            showDefaultLoading:false //是否显示默认的loading页面作为功能启动的过渡
        });
    }
}

快手iOS端配置

快手iOS端需配置通用链接(Universal Link)参考

1、快手授权登录

sdkShortvideo.onKwaiAuth({
    scope:"user_info",//设置授权范围(ios),Android在加载插件地方设置
    state:"state"//STATE安全参数,标识和用户或者设备相关的授权请求
}, function(res){
    console.log(res);
    if (res.errorCode == 1) {//授权成功
        var code = res.code;//临时授权码
        var state = res.state;//透传STATE安全参数
    } else if (res.errorCode == -1) {//取消授权
        var state = res.state;//透传STATE安全参数
    } else {//授权失败
        var errorCode = res.errorCode//错误码,参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
    }
});

2、快手分享私信

var imagePath = plus.io.convertLocalFileSystemURL('_www/static/logo.png');
sdkShortvideo.onKwaiShareMessage({
    title:"标题",//标题(必需)
    description:"描述",//描述(必需)
    thumbData:imagePath,//图片base64数据或图片平台原生路径(uniapp需要plus.io转换),不能超过64k(必需)
    webpageUrl:"https://www.baidu.com",//链接(必需)
    //state: "state" //可选
}, function(res){
    console.log(res);
    //errorCode错误码,更多参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
    if (res.errorCode == 1) {//成功

    } else if (res.errorCode == -1) {//取消

    } else {//失败
        var errorCode = res.errorCode
    }
});

3、快手分享私信到某个人或群组

var imagePath = plus.io.convertLocalFileSystemURL('_www/static/logo.png');
sdkShortvideo.onKwaiShareMessageToBuddy({
    openId:"",//授权登陆获取对openId(必需)
    targetOpenId:"",//目标用户openId(必需)
    title:"标题",//标题(必需)
    description:"描述",//描述(必需)
    thumbData:imagePath,//图片base64数据或图片平台原生路径(uniapp需要plus.io转换),不能超过64k(必需)
    webpageUrl:"https://www.baidu.com",//链接(必需)
    //state: "state" //可选
}, function(res){
    console.log(res);
    //errorCode错误码,更多参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
    if (res.errorCode == 1) {//成功

    } else if (res.errorCode == -1) {//取消

    } else {//失败
        var errorCode = res.errorCode
    }               
});

4、快手打开用户的主页

sdkShortvideo.onKwaiShowProfile({
    targetOpenId: "",//目标用户openId
    //state: "state" //可选
}, function(res){
    console.log(res);
    //errorCode错误码,更多参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
    var errorCode = res.errorCode
});

5、快手分享图片

var imagePath = plus.io.convertLocalFileSystemURL('_www/static/logo.png');
sdkShortvideo.onKwaiShareMedia({
    transaction: "SinglePicturePublish", //android  SinglePicturePublish、SinglePictureEdit、SingleVideoPublish、SingleVideoEdit、SingleVideoClip、MultiPictureEdit、MultiMediaClip、AICutMedias
    mediaFeature: 2, //ios 0:裁剪功能 1:视频编辑功能,该能力需要申请权限 2:图片编辑功能 3:视频发布功能,该能力需要申请权限 4:智能裁剪功能
    isChooseImage: true, //打开相册选择图片视频等(只支持iOS)
    mediaObject: {
        imageAssets: [imagePath]
    },//iOS端如果isChooseImage == true mediaObject参数可不传
    tags:[
        "话题"
    ], //话题(可选)
    plcBindInfo: {
        plcMpAppId: "appid", //小程序id
        plcTitle: "标题", //标题
        plcMpPath: "/index/xxx" //小程序路径
    } //挂载小程序(可选)
}, function(res) {
    console.log(res);
    if (res.errorCode == 1) { //成功

    } else if (res.errorCode == -1) { //取消

    } else { //失败
        //errorCode错误码,更多参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
        var errorCode = res.errorCode 
    }
});

6、快手分享视频

var videoPath = plus.io.convertLocalFileSystemURL('_www/static/test.mp4');
sdkShortvideo.onKwaiShareMedia({
    transaction: "SingleVideoPublish", //android  SinglePicturePublish、SinglePictureEdit、SingleVideoPublish、SingleVideoEdit、SingleVideoClip、MultiPictureEdit、MultiMediaClip、AICutMedias
    mediaFeature: 1, //ios 0:裁剪功能 1:视频编辑功能,该能力需要申请权限 2:图片编辑功能 3:视频发布功能,该能力需要申请权限 4:智能裁剪功能
    isChooseImage: true, //打开相册选择图片视频等(只支持iOS)
    mediaObject: {
        videoAssets:[videoPath]//视频列表
    },//iOS端如果isChooseImage == true mediaObject参数可不传
    tags:[
        "话题"
    ], //话题(可选)
    plcBindInfo: {
        plcMpAppId: "appid", //小程序id
        plcTitle: "标题", //标题
        plcMpPath: "/index/xxx" //小程序路径
    } //挂载小程序(可选)
}, function(res) {
    console.log(res);
    if (res.errorCode == 1) { //成功

    } else if (res.errorCode == -1) { //取消

    } else { //失败
        //errorCode错误码,更多参考https://open.kuaishou.com/platform/openApi?group=GROUP_OPEN_PLATFORM&menu=11
        var errorCode = res.errorCode 
    }
});

保存图片到相册(单图或单视频,只支持iOS,当iOS端不使用插件自带图片选择器时使用,因为苹果端分享需要保存到手机相册获取localIdentifier)

sdkShortvideo.onSaveImageToPhotosAlbum({
    filePath: plus.io.convertLocalFileSystemURL("图片路径"),
    type: 'image' //默认image,可选参数:image 或 video
}, function(res2) {
    if (res2.path) {
        console.log('save success:' + res2.path);
        uni.showToast({
            icon: 'success',
            title: '保存成功'
        })
    } else {
        uni.showToast({
            icon: 'error',
            title: '保存失败'
        })
    }
});

保存图片到相册2(多图片多视频,只支持iOS,当iOS端不使用插件自带图片选择器时使用,因为苹果端分享需要保存到手机相册获取localIdentifier)

var imagePath = plus.io.convertLocalFileSystemURL('_www/static/logo.png');
var imagePath2 = plus.io.convertLocalFileSystemURL('_www/static/logo2.png');
var videoPath = plus.io.convertLocalFileSystemURL('_www/static/test.mp4');
sdkShortvideo.onSaveMultiMediaToPhotosAlbum({
    filePaths: [imagePath, imagePath2, videoPath],
}, function(res) {
    if (res.paths) {
        console.log('save success:' + res.paths);
        uni.showToast({
            icon: 'success',
            title: '保存成功'
        })
    } else {
        uni.showToast({
            icon: 'error',
            title: '保存失败'
        })
    }
});

检查图片或视频是否存在于相册中(只支持iOS)

//iOS端判断图片或视频是否存在相册中
//传localIdentifier 调用保存到相册的接口onSaveMultiMediaToPhotosAlbum()或onSaveImageToPhotosAlbum方法时返回 (可自行保存本地 解决同资源重复下载或保存相册问题)
var has = sdkShortvideo.checkMultiMediaInPhotosAlbum("756BCEB9-1CDA-4238-AEE0-C376BCAA3DF3/L0/001")
if(has===true) {
    console.log('在相册有');
} else {
    console.log('在相册没');
}

隐私、权限声明

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

安卓:android.permission.INTERNET、android.permission.READ_EXTERNAL_STORAGE; iOS:NSPhotoLibraryAddUsageDescription、NSPhotoLibraryUsageDescription; 抖音SDK详情参照文档https://developer.open-douyin.com/docs/resource/zh-CN/dop/develop/sdk/mobile-app/sdk 快手SDK详情参照文档https://open.kuaishou.com/platform/openApi?menu=6

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

插件不采集任何数据

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

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问