更新记录
1.3.0(2022-07-04)
本次主要更新: 1.修复上次appstore,提示Asset validation failed (90085)错误问题
1.2.0(2022-05-23)
本次主要更新: 1.修复只能录制50M的问题 2.增加分辨率参数 3.增加相关回调,优化回调 4.增加 获取上一个没有导出的视频 方法
1.1.0(2022-05-12)
本次主要更新: 1.修复录屏的分辨率低 和 执行多次回调 问题
查看更多平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:12 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
KJ-ScreenRecorderV2
后台录屏、应用外录屏、直播屏幕
ios 注意事项 更多教程,进群:801767872,到群文件中查找“ios后台录屏扩展证书配置教程”
1.配置扩展
需要在 主目录->nativeplugins->KJ-ScreenRecorderV2 下配置添加ios-extension.json和ios-screenRecorder.mobileprovision文件
ios-extension.json文件配置参考 示列项目
比如主工程Bundle ID为:com.xxxx.xxxx
分享扩展的Bundle ID 和 App Groups Bundle ID 需要开苹果开发者官网配置
{
"screenRecorder.appex": {
"identifier": "com.xxxx.xxxx.screenRecorder",
"profile": "ios-screenRecorder.mobileprovision",
"plists": {
"KJGroupIdentifier": "group.com.xxxx.xxxx.screenRecorder",
"CFBundleDisplayName": "后台录屏"
},
"entitlements": {
"com.apple.security.application-groups": ["group.com.xxxx.xxxx.screenRecorder"]
}
}
}
2.配置manifest.json
/* ios打包配置 */
"ios" : {
"capabilities" : {
"entitlements" : {
"com.apple.security.application-groups" : ["group.com.xxxx.xxxx.screenRecorder"]
},
}
},
导入插件
const KJScreenRecorderV2 = uni.requireNativePlugin('KJ-ScreenRecorderV2');
使用
<template>
<view>
<button type="primary" @click="start()">开始录屏</button>
<button type="primary" @click="getLastNoExportVideo()">获取上一个没有导出的视频</button>
<view>{{json}}</view>
</view>
</template>
<script>
const KJScreenRecorderV2 = uni.requireNativePlugin('KJ-ScreenRecorderV2');
export default {
data() {
return {
json: '',
}
},
onLoad() {
},
methods: {
start() {
/**
* exportVideoPreset-导出的视频分辨率
* AVAssetExportPresetLowQuality - 低质量
* AVAssetExportPresetMediumQuality - 中等质量
* AVAssetExportPresetHighestQuality - 高质量
* AVAssetExportPreset640x480
* AVAssetExportPreset960x540
* AVAssetExportPreset1280x720
* AVAssetExportPreset1920x1080
* AVAssetExportPreset3840x2160
* **/
var dic = {
showsMicrophoneButton: true,
preferredExtension: "com.kj.KJDocument.share", //screenRecorder.appex 的 identifier
GroupIdentifier: "group.com.kj.KJDocument.share",//App Group ID
videoWidth: 720, //录屏时候的分辨率宽度,默认是屏幕宽度,使用默认的,设置为0
videoHeight: 1080, //录屏时候的分辨率高度,默认是屏幕高度,使用默认的,设置为0
exportVideoPreset: "AVAssetExportPresetHighestQuality" //导出的视频分辨率,设置越低,导出越快
}
KJScreenRecorderV2.start(dic, (res) => {
console.log("start: " + JSON.stringify(res));
this.json = JSON.stringify(res)
if (res.type == "broadcastStarted") {
console.log("录屏开始");
}else if (res.type == "broadcastPaused") {
console.log("录屏暂停");
}else if (res.type == "broadcastResumed") {
console.log("录屏继续");
}else if (res.type == "broadcastFinished") {
console.log("录屏完成");
}else if (res.type == "startExportVideo") {
uni.showLoading({
title: '开始导出视频...'
});
}else if(res.type == "endExportVideo") {
uni.hideLoading();
uni.saveImageToPhotosAlbum({
filePath: plus.io.convertAbsoluteFileSystem(res.filePath),
success: function() {
console.log('save success');
},
fail: function(e) {
console.log(JSON.stringify(e));
}
});
}
});
},
getLastNoExportVideo() {
/**
* 使用场景
* 1.在app内开启录屏,然后完全关闭app,然后点击停止录屏,打开app的时候;
* 2.在控制中心,长按录屏按钮,选择本app录屏,然后点击停止录屏;
* 可以使用这个方法,获取这次的录屏
* **/
var dic = {
GroupIdentifier: "group.com.kj.KJDocument.share",//App Group ID
exportVideoPreset: "AVAssetExportPresetHighestQuality" //导出的视频分辨率
}
KJScreenRecorderV2.getLastNoExportVideo(dic, (res) => {
console.log("start: " + JSON.stringify(res));
this.json = JSON.stringify(res)
if (res.type == "startExportVideo") {
uni.showLoading({
title: '开始导出视频...'
});
}else if (res.type == "endExportVideo") {
uni.hideLoading();
if (res.result == true) {
uni.saveImageToPhotosAlbum({
filePath: plus.io.convertAbsoluteFileSystem(res.filePath),
success: function() {
console.log('save success');
},
fail: function(e) {
console.log(JSON.stringify(e));
}
});
}
}
});
}
}
}
</script>