更新记录

1.0.1(2022-08-05)

2022年8月4日首次发布


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

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


安卓通知栏监听,电池白名单,屏幕唤醒。


监听方法需在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>

隐私、权限声明

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

<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

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

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

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