更新记录

1.2(2023-10-11)

分享联系人、群组(shareMessage)和分享个人(shareMessageToBuddy)支持传网络图片或者本地图片

1.1(2023-07-11)

支持判断快手是否安装(包含主站、极速版)

1.0(2023-05-16)

init,快手授权登录,发布、编辑、裁剪图片和视频,分享 Ba-Kwai

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


快手授权登录,发布、编辑、裁剪图片和视频,分享 Ba-Kwai

简介

快手授权登录,发布、编辑、裁剪图片和视频,一键智能裁剪,分享私信,打开用户主页,挂载小程序等。自带选择图片和选择视频方法。

抖音授权登录、发布、分享 Ba-Aweme文档

开放能力

<!-- -->
开放能力
账号授权 社交功能 生产功能
  • 快手主站授权
  • 快手极速版授权
  • 分享私信
  • 分享私信到指定人
  • 打开指定用户主页
  • 单图编辑
  • 单图发布
  • 单视频编辑
  • 单视频裁剪
  • 单视频发布
  • 多视频图片裁剪
  • 智能裁剪视频
  • 多图编辑
  • 发布时挂载小程序

有建议和需要,请联系QQ:2579546054

也可关注博客,实时更新最新插件

uniapp 常用原生插件大全


准备工作

开发者需要在快手开放平台完成注册,新建一个网站应用,并获取应用标识appId 和 appSecret,详细参考申请注册流程,官网地址:https://open.kuaishou.com/platform

配置插件

在项目的 manifest.json 文件,App原生插件配置中,勾选插件,并配置appId和scope

使用方法

script 中引入组件

    const kwai = uni.requireNativePlugin('Ba-Kwai');

script 中调用(示例参考,可根据自己业务和调用方法自行修改)

        methods: {
            isAppInstalled() { //是否安装
                kwai.isAppInstalled(
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            //isInstalled:快手主站是否安装
                            //isInstalledN:快手极速版是否安装
                            this.msgList.unshift(JSON.stringify(res.data));
                            uni.showToast({
                                title: JSON.stringify(res.data),
                                icon: "none",
                                duration: 3000
                            })
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            sendAuth() { //授权登录
                kwai.sendAuth({
                        state: 'BaKwai', //STATE安全参数,标识和用户或者设备相关的授权请求。建议开发者实现
                        loginType: 1, //默认1,1 通过快手App登录授权 2 通过H5页面登录授权
                        //isGetOpenId: true
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        }
                        uni.showToast({
                            title: res.msg,
                            icon: "none",
                            duration: 3000
                        })
                    });
            },
            initKwaiOpenAPI() { //初始化使用接口 KwaiOpenAPI
                kwai.initKwaiOpenAPI({
                        goToMargetAppNotInstall: true, // 应用未安装,是否自动跳转应用市场
                        goToMargetAppVersionNotSupport: true, // 应用已安装但版本不支持,是否自动跳转应用市场
                        setNewTaskFlag: true, // 设置启动功能页面是否使用新的页面栈
                        setClearTaskFlag: true, // 设置启动功能页面是否清除当前页面栈,当isSetNewTaskFlag为true时生效
                        showDefaultLoading: false // 是否显示默认的loading页面作为功能启动的过渡
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            addKwaiAPIEventListerer() { // 业务请求回调结果监听
                kwai.addKwaiAPIEventListerer(
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            shareMessage() { //通过选择人或者群组分享私信
                let thumbData = plus.io.convertLocalFileSystemURL('_www/static/logo.png');

                kwai.shareMessage({
                        title: "标题", //标题(必填)
                        description: "描述", //描述(必填)
                        webpageUrl: "https://www.baidu.com", //链接(必填)
                        thumbData: thumbData//图片byte数据
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            shareMessageToBuddy() { //通过TargetOpenId分享私信给个人,openId是必须参数
                let thumbData = plus.io.convertLocalFileSystemURL('_www/static/logo.png');

                kwai.shareMessageToBuddy({
                        openId: this.openId, //授权登录获取的 openId (必填)
                        targetOpenId: this.targetOpenId, //目标用户的 openId (必填)
                        title: "标题", //标题(必填)
                        description: "描述", //描述(必填)
                        webpageUrl: "https://www.baidu.com", //链接(必填)
                        thumbData: thumbData//图片byte数据
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            showProfile() { //打开TargetOpenId指向的个人主页
                kwai.showProfile({
                        targetOpenId: this.targetOpenId, //目标用户的 openId (必填)
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            publishPicture() { //发布单张图片
                kwai.publishPicture({
                        filePath: this.mediaPaths[0],
                        //multiMediaAssets: this.mediaPaths,
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:"",//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            editPicture() { //编辑单张图片
                kwai.editPicture({
                        filePath: this.mediaPaths[0],
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            publishSingleVideo() { //发布单个视频
                kwai.publishSingleVideo({
                        filePath: this.mediaPaths[0],
                        //cover:"",//封面(仅视频)
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            editSingleVideo() { //编辑单张图片
                kwai.editSingleVideo({
                        filePath: this.mediaPaths[0],
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            clipSingleVideo() { //裁剪单个视频
                kwai.clipSingleVideo({
                        filePath: this.mediaPaths[0],
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            clipMultiMedia() { //多图和视频裁剪
                kwai.clipMultiMedia({
                        //filePath: this.mediaPaths[0],
                        multiMediaAssets: this.mediaPaths,
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            aiCutMedias() { //发布智能剪辑
                kwai.aiCutMedias({
                        //filePath: this.mediaPaths[0],
                        multiMediaAssets: this.mediaPaths,
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            editMultiPicture() { //多图编辑,支持版本:开放平台不低于3.0.4,快手主站和极速版不低于9.7.20
                kwai.editMultiPicture({
                        //filePath: this.mediaPaths[0],
                        multiMediaAssets: this.mediaPaths,
                        //tags:"#标签1#标签2",//标签
                        //extraInfo:"",//(1)输入透传的额外参数extraInfo
                        //mediaInfoMap:{},//(2)业务参数mediaInfoMap(传入格式key1:value1;key2:value2)
                        //thirdExtraEdit:"",//(3)第三方埋点数据额外参数thirdExtraInfo
                        //String plcMpAppId:"",//小程序id
                        //String plcMpPath:"",//小程序路径
                        //String plcTitle:"",//挂载小程序的标题
                    },
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            chooseSysImage() { //选择图片(系统)
                kwai.chooseSysImage(
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                            //this.mediaPaths.push(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            chooseSysVideo() { //选择视频(系统)
                kwai.chooseSysVideo(
                    (res) => {
                        console.log(res)
                        if (res.data) {
                            this.msgList.unshift(JSON.stringify(res.data));
                            //this.mediaPaths.push(JSON.stringify(res.data));
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        }
                    });
            },
            chooseImage() { //选择图片(uniapp)
                let that = this;
                uni.chooseImage({
                    count: 9,
                    sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
                    sourceType: ['album'], //从相册选择
                    success: function(res) {
                        console.log(JSON.stringify(res.tempFilePaths));
                        that.mediaPaths = res.tempFilePaths;
                        //that.msgList.unshift(JSON.stringify(that.mediaPaths));
                        // uni.getImageInfo({
                        //  src: res.tempFilePaths[0],
                        //  success: function(image) {
                        //      that.path = image.path;
                        //      console.log(image);
                        //  }
                        // });
                    }
                })
            },
            chooseVideo() { //选择视频(uniapp)
                let that = this;
                uni.chooseVideo({
                    sourceType: ['camera', 'album'],
                    success: function(res) {
                        console.log(JSON.stringify(res.tempFilePath));
                        that.mediaPaths.push(res.tempFilePath);
                        //that.msgList.unshift(JSON.stringify(that.mediaPaths));
                    }
                })
            },
        }

注意

调用发布视频的功能却跳转到了剪辑页是为什么?

按以下步骤进行检查:

  • 在开发者后台检查此应用是否有发布视频的权限,若没有可能会跳转到剪辑页。
  • 检查发布的视频是否超过最大长度限制,若视频长度超限也会跳转到剪辑页。如果开发者想配置此最大长度限制可以提工单咨询。
Android11及更高版本分享时,会进入剪辑页,并提示失败,这是什么原因?

android 11的读取sd卡目录权限变了,有两种改法。一种是使用fileProvider,一种将视频放公共目录下。

错误码

错误码 说明 备注
1 分享成功
-1 内部问题,联系客服
-1005 没有安装快手App
-1006 不支持此功能
-1010 参数传递失败
-1011 快手App没有登录
-1013 拒绝当次分享动作 如果是发布视频:请检查视频长度; mDisableFallback是否是false
-1014 快手App开着青少年模式,关闭即可。
-1015 网络出现异常,可以稍后试试
-1016 快手App没有存储权限
-1017 分享的图片损坏
-1018 3s内不能重复分享
-1019 视频size太大

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify文档

自定义通知(耳机电量)插件 Ba-NotifyEarphone文档

应用未读角标插件 Ba-Shortcut-Badge文档

应用开机自启插件 Ba-Autoboot文档

扫码原生插件(毫秒级、支持多码)Ba-Scanner-G文档

扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)Ba-Scanner文档

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar文档

原生sqlite本地数据库管理 Ba-Sqlite文档

安卓保活插件(采用多种主流技术) Ba-KeepAlive文档

安卓保活套装(通用、常驻通知、电池优化、自启管理、后台运行等)文档

安卓快捷方式(桌面长按app图标) Ba-Shortcut文档

自定义图片水印(任意位置) Ba-Watermark文档

最接近微信的图片压缩插件 Ba-ImageCompressor文档

视频压缩、视频剪辑插件 Ba-VideoCompressor文档

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon文档

原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast文档

图片涂鸦、画笔 Ba-ImagePaint文档

pdf阅读(手势缩放、显示页数) Ba-Pdf文档

声音提示、震动提示、语音播报 Ba-Beep文档

websocket原生服务(自动重连、心跳检测) Ba-Websocket文档

短信监听(验证码) Ba-Sms文档

智能安装(自动升级) Ba-SmartUpgrade文档

监听系统广播、自定义广播 Ba-Broadcast文档

监听通知栏消息(支持白名单、黑名单、过滤) Ba-NotifyListener文档

全局置灰、哀悼置灰(可动态、同时支持nvue、vue) Ba-Gray文档

获取设备唯一标识(OAID、AAID、IMEI等) Ba-IdCode文档

实时定位(系统、后台运行、支持息屏)插件 Ba-Location文档

实时定位(高德、后台运行、支持息屏、坐标转换、距离计算) Ba-LocationAMap文档

窗口小工具、桌面小部件、微件 Ba-AppWidget文档

窗口小工具、桌面小部件、微件(日历、时间) Ba-AwCalendarS文档

画中画悬浮窗(视频) Ba-VideoPip文档

悬浮窗(在其他应用上层显示) Ba-FloatWindow文档

悬浮窗(应用内、无需授权) Ba-FloatWindow2文档

悬浮窗(悬浮球、动态菜单、在其他应用上层显示) Ba-FloatBall文档

添加到“用其他应用打开”中,用于文件传递、分享等 Ba-ShareReceive文档

获取地图数据(高德、地理编码、反地理编码) Ba-AMapData文档

来电显示悬浮窗插件(支持锁屏) Ba-CallerID文档

隐私、权限声明

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

android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE

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

插件自身不采集任何数据,插件使用的快手开发平台 SDK采集数据请参考其官方说明:https://open.kuaishou.com/

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

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