更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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('在相册没');
}