更新记录

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

原生插件通用使用流程:

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


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>

隐私、权限声明

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

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

插件不采集任何数据

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

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