更新记录
1.0.3(2024-04-19)
优化参数
1.0.2(2024-04-01)
iOS端添加检查图片或视频是否存在于手机相册中:checkMultiMediaInPhotosAlbum()
1.0.1(2024-03-08)
Android端FileProvider冲突解决
查看更多平台兼容性
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" : {
"urltypes" : [
{
"urlidentifier" : "douyin",
"urlschemes" : [ "aw5hkvxxxxxxxxx" ] //aw5hkvxxxxxxxxx改成你的抖音应用的clientKey
},
{
"urlidentifier" : "kuaishou_release",
"urlschemes" : [ "ks68567xxxxxxxx" ] //ks68567xxxxxxxx改成你的快手应用的appId
}
],
"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:[
"话题"
]//可选, 分享内容携带话题//*/
}, 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:[
"话题"
]//可选, 分享内容携带话题//*/
}, 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('在相册没');
}
(如有疑问请联系qq 2175322076)