更新记录
1.0.1(2022-08-05)
2022年8月4日首次发布
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
安卓通知栏监听,电池白名单,屏幕唤醒。
监听方法需在onLoad()或其他全局地方使用,如:
onLoad() {
const globalEvent = uni.requireNativePlugin("RC-NoticeMonitoring")
plus.globalEvent.addEventListener("monitoring_notification", (e) => {
console.log(e);
});
},
globalEvent不能替换成其他变量名,否则接收不到监听信息,监听到的信息如下:
{
"title":"通知标题",
"text":"通知内容",
"packageName":"发出通知的包名"
}
插件内含方法及使用:
1. 检查监听通知栏权限
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//res返回值 1为有权限 0为无权限
MyPlugin.isNotification((res)=>{
console.log(res)
})
2. 设置监听通知栏权限
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//无权限时没有任何回调直接跳转到设置页面,有权限时返回1
MyPlugin.OpenNoticePermission((res)=>{
console.log(res)
})
3. 检查电池白名单
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//res返回值 1为白名单 0为无白名单
MyPlugin.isBatteryOptimizations((res)=>{
console.log(res)
})
4. 设置电池白名单
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//无权限时没有任何回调直接跳转到设置页面,有权限时返回1
MyPlugin.OpenBatteryOptimizations((res)=>{
console.log(res)
})
5. 开始监听
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//WakeLock_packageName传入插件的包名,系统收到此包名的通知时会唤醒屏幕,无需唤醒屏幕时可为空值""
MyPlugin.OpenNotification({
WakeLock_packageName: "com.tencent.mm"
}, (res) => {
console.log(res)
})
成功后返回
{
"NotificationStatus":true,
"WakeLock_packageName":"唤醒屏幕的包名"
}
5. 停止监听
//引入插件
const MyPlugin = uni.requireNativePlugin("RC-NoticeMonitoring")
//WakeLock_packageName:传入插件的包名,系统收到此包名的通知时会唤醒屏幕,无需唤醒屏幕时可为空值"";
MyPlugin.CloseNotification((res) => {
console.log(res)
})
成功后返回
{
"NotificationStatus":false,
"WakeLock_packageName":"唤醒屏幕的包名"
}
示例代码
<template>
<view>
<view style="padding: 20rpx;">
<block v-for="(item,index) in list" :key="index">
<view style="color: red;">包名:{{item.packageName}}</view>
<view>标题:{{item.title}}</view>
<view>内容:{{item.text}}</view>
<view>***********************************</view>
</block>
</view>
<button @click="is_notice()" style="margin: 30rpx;">检查通知监听权限</button>
<button @click="is_battery()" style="margin: 30rpx;">检查电池白名单</button>
<button @click="OpenNoticePermission()" style="margin: 30rpx;">设置通知栏监听权限</button>
<button @click="open_battery()" style="margin: 30rpx;">设置电池白名单权限</button>
<button @click="StartNotice()" style="margin: 30rpx;">开始监听</button>
<button @click="StopNotice()" style="margin: 30rpx;">停止监听</button>
</view>
</template>
<script>
const m = uni.requireNativePlugin("RC-NoticeMonitoring")
export default {
data() {
return {
list: []
}
},
onLoad() {
const globalEvent = uni.requireNativePlugin("RC-NoticeMonitoring")
plus.globalEvent.addEventListener("monitoring_notification", (e) => {
console.log(e);
this.list.push(e)
if (this.list.length > 5) {
this.list.splice(0, 1)
}
});
},
methods: {
//检查通知监听权限
is_notice() {
m.isNotification((res) => {
if (res == 1) {
uni.showToast({
title: '已开启通知栏监听权限',
icon: 'none'
});
} else {
uni.showToast({
title: '未开启通知栏监听权限',
icon: 'none'
});
}
})
},
//检查电池白名单
is_battery() {
m.isBatteryOptimizations((res) => {
if (res == 1) {
uni.showToast({
title: '已开启电池优化白名单权限',
icon: 'none'
});
} else {
uni.showToast({
title: '未开启电池优化白名单权限',
icon: 'none'
});
}
})
},
//停止监听
StopNotice() {
m.CloseNotification((res) => {
if (!res.NotificationStatus) {
uni.showToast({
title: '已停止监听',
icon: 'none'
});
}
})
},
//开始监听
StartNotice() {
m.OpenNotification({
WakeLock_packageName: "com.tencent.mm"
}, (res) => {
if (res.NotificationStatus) {
uni.showToast({
title: '已开始监听,亮屏包名:' + res.WakeLock_packageName,
icon: 'none'
});
}
})
},
//打开通知监听权限设置
OpenNoticePermission() {
m.OpenNoticePermission((res) => {
if (res == 1) {
uni.showToast({
title: '已开启通知栏监听',
icon: 'none'
});
}
})
},
//打开电池白名单设置
open_battery() {
m.OpenBatteryOptimizations((res) => {
if (res == 1) {
uni.showToast({
title: '已开启电池优化白名单',
icon: 'none'
});
}
})
},
}
}
</script>
<style>
</style>