更新记录

2.5.2(2023-01-18)

1、修复了部分机型无法发送常驻通知的问题

2、uniapp离线sdk更新到:2023年01月12日发布——HBuilderX(3.6.17.20230112)

2.5.1(2022-06-15)

1、新增permanentNotice方法 发送常驻通知栏

2.5.0(2022-04-14)

HBuilderX 3.2.5版本之后适配了AndroidX,升级时需要参考文档重新配置 插件也升级适配了AndroidX

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择


监听通知栏消息

代码演示

<template>
    <view>
        {{msg}}
        <view>
            <view v-for="(item, index) in list" :key="index">
              <text>监听到内容:{{item.content}}</text><br><text>监听到标题:{{item.title}}</text>
              <br /><hr />
            </view>
          </view>
        <button type="default" @click="init">初始化</button>
        <button type="default" @click="test">是否开启获取通知权限</button>
        <button type="default" @click="set">跳转到设置界面</button>
        <button type="default" @click="start">开始监听</button>
        <button type="default" @click="permanentNotice">发送常驻通知栏</button>
        <button type="default" @click="clear">清空列表记录</button>
        <button type="default" @click="cancelAll">清空所有通知栏消息</button>
        <button type="default" @click="isIgnoringBatteryOptimizations">是否设置白名单</button>
        <button type="default" @click="requestIgnoreBatteryOptimizations">去设置白名单</button>
    </view>
</template>

<script>
    const NoticeBarModule = uni.requireNativePlugin('lu-NoticeBarModule');

    export default {
        data() {
            return {
                msg: '收到的通知内容会展示在这里',
                list: []
            }
        },
        onLoad() {},
        methods: {
            init() {
                //初始化 <-- 需要初始化一下 然后调用一次start方法即可  多次调用也无所谓不影响。
                NoticeBarModule.init();
            },
            clear() {
                this.list = [];
            },
            test() {
                //var res = NoticeBarModule.readNotificationBar(e => {
                //  this.msg = JSON.stringify(e)
                //  uni.showToast({
                //      title: JSON.stringify(e),
                //      icon: 'none'
                //  });
                //});

                //新版本改为同步
                //TODO: 是否开启获取通知栏内容权限已改成同步返回。 1.0.2版本
                let res = NoticeBarModule.readNotificationBar();
                if (res) {
                    //开启
                    uni.showToast({
                        title: '开启',
                        icon: 'none'
                    });
                } else {
                    //未开启
                    uni.showToast({
                        title: '未开启',
                        icon: 'none'
                    });
                }
            },
            set() {
                NoticeBarModule.toSetting();
            },
            //清空所有通知栏 (清空所有可以清空的通知栏,常驻通知栏无法清空)  必须授权才能调用此函数 否则会抛异常
            cancelAll() {
                NoticeBarModule.cancelAll(); //无任何返回值
            },
            start() {
                let _this = this;
                NoticeBarModule.getNotification(e => { //<-- e 就是监听到的通知栏消息
                    _this.list.push(e);
                    console.log(JSON.stringify(e));
                    uni.showToast({
                        title: JSON.stringify(e),
                        icon: 'none'
                    });
                });
            },
            isIgnoringBatteryOptimizations() {
                let res = NoticeBarModule.isIgnoringBatteryOptimizations();
                if (res) {
                    //开启
                    uni.showToast({
                        title: '已开启白名单',
                        icon: 'none'
                    });
                } else {
                    //未开启
                    uni.showToast({
                        title: '未开启白名单',
                        icon: 'none'
                    });
                }
            },
            requestIgnoreBatteryOptimizations() {
                //申请加入白名单 没有任何回调
                NoticeBarModule.requestIgnoreBatteryOptimizations()
            },

            //等下一个版本  permanentNotice方法暂时有问题
            permanentNotice() {
                NoticeBarModule.permanentNotice({
                    //状态栏标题
                    ticker: "状态栏标题",    //必填
                    //通知ID
                    notifyId: 1,    //int类型
                    //通知标题
                    title: "通知标题",  //必填
                    //通知的内容
                    content: "通知的内容"    //必填
                });
            },

        }
    }
</script>

<style>
</style>

插件说明

自动监听通知栏推送消息,返回消息标题内容接收时间包名 
可以实现`拦截功能`,加群咨询

插件方法

方法名 返回值 说明
init() 初始化方法
readNotificationBar() 值布尔 是否获取通知栏权限 true已经获取 false未获取 1.0.2版本已改为同步
toSetting() 跳转到设置界面
getNotification() json对象 开始监听通知栏内容 回调方法可以获取到监听到的内容 只需要调用一次即可
isIgnoringBatteryOptimizations 值布尔 是否开启白名单:true已开启 false未开启
requestIgnoreBatteryOptimizations 去设置白名单
cancelAll() 清空通知栏消息(包括其他apk发送的消息)2.3版本增加
permanentNotice() 无(2.5.1版本添加) 发送一个常驻的通知栏(下一个版本优化)

其他说明

如果需要再虚拟机或模拟器运行,请打包的时候务必勾选CPU支持类型x86

插件获取微信、QQ、支付宝收款、微信收款、短信内容均可监听到。

`拦截功能`功能请看插件说明

监听微信公众号消息联系作者QQ:`2310325773`  (备注监听公众号消息)

白名单功能不能保证app百分百后台运行不会杀死。不适配6以下的安卓系统。但是依旧可以安装,6以下系统调用isIgnoringBatteryOptimizations方法永远返回false。
调用requestIgnoreBatteryOptimizations会弹出(弹窗提醒)提示手机不支持。

如果有问题请看下方的作者联系方式:  备注uni插件
👇👇👇👇👇👇👇

QQ交流群:263173204备注uni插件😉

其他插件推荐

更多插件推荐
https://ext.dcloud.net.cn/plugin?id=7961 (文件类)
https://ext.dcloud.net.cn/plugin?id=5660 (短信类)

隐私、权限声明

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

插件申请的系统权限为: android.permission.BIND_NOTIFICATION_LISTENER_SERVICE 获取通知栏 android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 电池白名单

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

没有任何采集 安心使用

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

没有任何广告 安心使用

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