更新记录
1.0.0(2022-07-01)
首次更新
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | 适用版本区间:9 - 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-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>