更新记录

1.0.0(2022-07-01)

首次更新


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:9 - 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-Permission

获取权限状态、请求权限授权、AppTracking、通知权限、权限一体化(ios、android)

不带AppTracking权限版本:https://ext.dcloud.net.cn/plugin?id=8676

使用

<template>
    <view class="content">
        <button type="primary" @click="judgePermission">查询权限是否授权</button>
        <button type="primary" @click="requestPermission">请求权限授权</button>
        <button type="primary" @click="gotoAppPermissionSetting">跳转到app权限设置页面</button>
        <button type="primary" @click="requestPermissions_android">请求多个权限授权(andorid)</button>
        <uni-data-select v-model="value" :localdata="range" @change="change"></uni-data-select>
        <view>判断权限是否授权回调结果:</view>
        <view>{{title}}</view>
        <view>请求权限授权回调结果:</view>
        <view>{{title2}}</view>
    </view>
</template>

<script>
    let KJPermission = uni.requireNativePlugin('KJ-Permission');
    export default {
        data() {
            return {
                title: "待回调",
                title2: "待回调",
                name: "appTracking",
                value: "appTracking",
                range: [{
                        value: "appTracking", //注意:ios才有这个权限,ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "appTracking-跟踪(ios)"
                    },
                    {
                        value: "internet",
                        text: "internet-联网"
                    },
                    {
                        /**
                         * push注意:andorid只支持查询,不支持请求
                         * ios请求权限授权,不会回调用户选择的结果,status和granted为null,
                         * */
                        value: "push",
                        text: "push-通知"
                    },
                    {
                        value: "location", //ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3、4、5-已授权
                        text: "location-定位"
                    },
                    {
                        value: "audio", //ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "audio-麦克风"
                    },
                    {
                        value: "camera", //ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "camera-相机"
                    },
                    {
                        value: "photoLibrary", //注意:ios才有这个权限 ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权 4-有限的ios14可用
                        text: "photoLibrary-相册(ios)"
                    },
                    {
                        value: "contact", //ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "contact-通讯录"
                    },
                    {
                        value: "calendar", //ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "calendar-日历"
                    },
                    {
                        value: "memo", //注意:ios才有这个权限,ios回调的status字段声明:0-还没决定 1-受限制 2-拒绝 3-已授权
                        text: "memo-备忘录(ios)"
                    },
                ],
            };
        },
        onLoad() {},
        methods: {
            change(res) {
                console.log("res:", res);
                this.name = res
            },
            getAndroidPermissonName(name) {
                if (plus.os.name == 'Android') {
                    if (name == "internet") {
                        return "android.permission.INTERNET"
                    } else if (name == "push") {
                        return name
                    } else if (name == "location") {
                        return "android.permission.ACCESS_FINE_LOCATION"
                    } else if (name == "audio") {
                        return "android.permission.RECORD_AUDIO"
                    } else if (name == "camera") {
                        return "android.permission.CAMERA"
                    } else if (name == "contact") {
                        return "android.permission.READ_CONTACTS"
                    } else if (name == "calendar") {
                        return "android.permission.READ_CALENDAR"
                    } else {
                        return null
                    }
                } else {
                    return name;
                }
            },
            judgePermission() {
                //查询和请求授权权限,要先在manifest.json->App权限管理,添加相关权限之后,云打包才会生效
                KJPermission.judgePermission({
                    "name": this.getAndroidPermissonName(this.name)
                }, (res) => {
                    /**
                     * {"result":true,"status":null,"name":"push","error":null,"granted":null}
                     * 回调结果说明:
                     * result-是否请求成功 
                     * status-权限选择的类型  andorid:0-已授权 -1 - 未授权  ios: 看data.range内容的注释
                     * granted-是否授权: true-已授权 false-未授权 null-未知,只针对ios
                     * */
                    this.title = JSON.stringify(res);
                    console.log("judgePermission:" + JSON.stringify(res));
                });
            },
            requestPermission() {
                KJPermission.requestPermission({
                    "name": this.getAndroidPermissonName(this.name)
                }, (res) => {
                    this.title2 = JSON.stringify(res);
                    console.log("judgePermission:" + JSON.stringify(res));
                });
            },
            gotoAppPermissionSetting() {
                KJPermission.gotoAppPermissionSetting()
            },
            requestPermissions_android() {
                KJPermission.requestPermissions_android({
                    "names": [this.getAndroidPermissonName(this.name)]
                }, (res) => {
                    this.title2 = JSON.stringify(res);
                    console.log("judgePermission:" + JSON.stringify(res));
                });
            }
        },
    }
</script>

隐私、权限声明

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

按需添加权限 注意:ios,要添加这些权限,就算用不到也要添加,否则提交不了appstore:通讯录、日历、备忘录

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

插件不采集任何数据

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

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