uniapp 监听通知栏消息插件(支持白名单、黑名单、过滤) Ba-NotifyListener

news2024/11/15 23:53:01

简介(下载地址)

Ba-NotifyListener 是一款实时监听通知栏消息的uniapp插件。支持白名单、黑名单;支持监听消息移除;支持自定义过滤条件(如短信验证码)等。

  • 支持监听所有通知栏消息(包含id、ticker、标题、内容、时间等等内容)
  • 支持白名单(需要监听的应用,设置后其他应用都不监听)
  • 支持黑名单(不想监听的应用,不设置白名单时有效)
  • 支持自定义内容过滤条件(如过滤短信验证码,默认过滤4~8位数字)

相关插件

应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify(文档)

应用未读角标插件 Ba-Shortcut-Badge (文档)

短信监听(验证码) Ba-Sms(文档)

截图展示

在这里插入图片描述

使用方法

script 中引入组件

	const listener = uni.requireNativePlugin('Ba-NotifyListener');

script 中调用(示例参考,可根据自己业务和调用方法自行修改)

	const listener = uni.requireNativePlugin('Ba-NotifyListener'); //本插件
	const notify = uni.requireNativePlugin('Ba-Notify'); //应用通知插件(https://ext.dcloud.net.cn/plugin?id=9231)
	export default {
		data() {
			return {
				whiteList: [ //白名单
					'com.ba.UniTemp',
					'com.tencent.mobileqq', //qq
					'com.tencent.mm', //微信
					'com.android.mms', //短信
					'com.android.incallui', //来电
				],
				blackList: [ //黑名单
					'com.ba.UniTemp',
				],
				msgList: []
			}
		},
		methods: {
			setListener(flag = 0) { //设置监听
				let params = {};
				if (flag == 1) {
					params = {
						whiteList: this.whiteList,
					    //regex: "(\\d{4,8})",正则表达式,默认为匹配4-8位的数字
					};
				} else if (flag == 2) {
					params = {
						blackList: this.blackList,
					    //regex: "(\\d{4,8})",正则表达式,默认为匹配4-8位的数字
					};
				}
				listener.setListener(params, res => {
					console.log(res);
					if (res.ok && res.data) {
						if (res.data.listenType == 1) {
							this.msgList.push('收到消息:');
							this.msgList.push(JSON.stringify(res.data));
							if (res.data.result)
								this.msgList.push("解析结果:" + res.data.result);

						}
						if (res.data.listenType == 2) {
							this.msgList.push('移除消息:');
							this.msgList.push(JSON.stringify(res.data));
						}
					}
					uni.showToast({
						title: res.msg,
						icon: "none",
						duration: 3000
					})
				});
			},
			isHasPermission() { //是否开启获取通知权限
				listener.isHasPermission(res => {
					console.log(res);
					uni.showToast({
						title: res.ok ? (res.data && res.data.isHasPermission ? '已开启' : '未开启') : res.msg,
						icon: "none",
						duration: 3000
					})
				});
			},
			openPermission() { //跳转到通知权限设置界面(仅判断未打开时跳转)
				listener.openPermission(res => {
					let msg = res.msg;
					if (res.data && res.data.isHasPermission) {
						msg = res.data.isHasPermission ? "权限打开" : "权限关闭";
					}
					uni.showToast({
						title: msg,
						icon: "none",
						duration: 3000
					})
				});
			},
			setPermission() { //跳转到通知权限设置界面(开不开都跳转)
				listener.setPermission(res => {
					console.log(res);
					let msg = res.msg;
					if (res.data && res.data.isHasPermission) {
						msg = res.data.isHasPermission ? "权限打开" : "权限关闭";
					}
					uni.showToast({
						title: msg,
						icon: "none",
						duration: 3000
					})
				});
			},
			sendNotify() {//用于测试通知
				notify.show({
						channelID: '0',
						channelName: '普通通知',
						ID: 1,
						notifyType: 0,
						ticker: 'Ticker',
						title: 'title',
						content: "【某某应用】验证码:708563。尊敬的用户,您正在...,我们不会向您索要此验证码,切勿告知他人!",
						extend: "附加参数",
					},
					(res) => {
						console.log(res)
					});
			}
		}
	}		

api 列表

方法名说明
setListener设置监听
isHasPermission是否开启获取通知权限
openPermission跳转到通知权限设置界面(仅判断未打开时跳转)
setPermission跳转到通知权限设置界面(开不开都跳转)

setListener 方法参数

设置监听

属性名类型必填默认值说明
whiteListArrayfalse‘’白名单
blackListArrayfalse‘’黑名单
regexStringfalse‘’正则表达式过滤短信内容,默认过滤4~8位数字验证码,如’(\d{4,8})’

监听通知的参数

判断 res.data 有内容(参照使用方法),监听接收到的通知

属性名类型说明
listenTypeNumber1 接收到通知 2 移除通知
packageNameString应用包名
idNumber通知 id
postTimelong时间(毫秒)
postTimeSString时间(yyyy-MM-dd HH:mm:ss 格式)
tickerTextString通知 ticker,在顶部状态栏中的提示信息
titleString通知标题
contentString通知内容
resultString通知内容根据过滤规则,解析后的结果,如短信验证码
isOngoingBoolean通知是否持续显示,侧滑不能删除
isClearableBoolean点击通知,是否自动消失

isHasPermission、openPermission、setPermission方法 返回参数

判断 res.data 有内容(参照使用方法)

属性名类型说明
isHasPermissionBoolean是否开启获取通知权限

系列插件

图片选择插件 Ba-MediaPicker (文档)

图片编辑插件 Ba-ImageEditor (文档)

文件选择插件 Ba-FilePicker (文档)

应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify(文档)

应用未读角标插件 Ba-Shortcut-Badge (文档)

应用开机自启插件 Ba-Autoboot(文档)

扫码原生插件(毫秒级、支持多码)Ba-Scanner-G(文档)

扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)Ba-Scanner(文档)

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar(文档)

原生sqlite本地数据库管理 Ba-Sqlite(文档)

安卓保活插件(采用多种主流技术) Ba-KeepAlive(文档)

安卓快捷方式(桌面长按app图标) Ba-Shortcut(文档)

自定义图片水印(任意位置) Ba-Watermark(文档)

最接近微信的图片压缩插件 Ba-ImageCompressor(文档)

视频压缩、视频剪辑插件 Ba-VideoCompressor(文档)

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon(文档)

原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast(文档)

图片涂鸦、画笔 Ba-ImagePaint(文档)

pdf阅读(手势缩放、显示页数) Ba-Pdf(文档)

声音提示、震动提示、语音播报 Ba-Beep(文档)

websocket原生服务(自动重连、心跳检测) Ba-Websocket(文档)

短信监听(验证码) Ba-Sms(文档)

智能安装(自动升级) Ba-SmartUpgrade(文档)

监听系统广播、自定义广播 Ba-Broadcast(文档)

监听通知栏消息(支持白名单、黑名单、过滤) Ba-NotifyListener(文档)

全局置灰、哀悼置灰(可动态、同时支持nvue、vue) Ba-Gray(文档)

获取设备唯一标识(OAID、AAID、IMEI等) Ba-IdCode(文档)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot整合layui排坑

参考:thymeleaflayui加载页面渲染时TemplateProcessingException: Could not parse as expression: "_yaoshengting的博客-CSDN博客 目录 1.table渲染问题 2.解决方式 1.将clos后的[[ ]]分成四行写 2.加上 th:inline"none 1.table渲染问题 源代码&…

[附源码]Python计算机毕业设计Django拉勾教育课程管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

spark shuffle·读写流程 和 rdd持久化

1.对比mapreduce和spark mapreduce里 map的第3条就是说,比如我存了很多条数据,如果一条一条写进磁盘,肯定有很多次IO,我先归并到一个缓存里面再溢写磁盘。 spark与其的差别就是用map代替了buffer,因为map存的key唯一&…

[附源码]JAVA毕业设计教学辅助系统(系统+LW)

[附源码]JAVA毕业设计教学辅助系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

[附源码]计算机毕业设计springboo酒店客房管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【小5聊】使用div+css布局绘制32支球队比赛对阵图,拭目以待冠军花落谁家

虽然不是狂爱足球爱好者,但多少会有关注下,像梅西和C罗是经常听到的 可能是没有我们队的原因,关注会比较少,只看个结果,所以 趁着这次机会,通过js前端技术divcss布局方式绘制本次世界杯足球比赛对阵图 2022…

Android 腾讯位置服务地图简单使用

文章目录概述腾讯位置服务地图SDK兼容性创建工程获取Appkey配置AppKey配置工程代码混淆权限配置地图基础地图地图类型个性化地图3D建筑行政区划出现的问题及解决源码概述 ​ 本文参考腾讯位置服务官方文档:Android地图SDK | 腾讯位置服务 (qq.com) ​ 腾讯位置服…

【数据结构与算法】一套链表 OJ 带你轻松玩转链表

✨个人主页:bit me ✨当前专栏:数据结构 ✨刷题专栏:基础算法 链 表 OJ🏳️一. 移除链表元素🏴二.反转链表🏁三.链表的中间结点🚩四.链表中倒数第k个结点🏳️‍🌈五.合并…

华为阿里等技术专家15年开发经验总结:SSM整合开发实战文档

前言 都说程序员工资高、待遇好, 2022 金九银十到了,你的小目标是 30K、40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升…

Spring基础篇:事务开发

Spring整合持久层 Spring技术为什么要与持久层技术进行整合? 1、JavaEE开发过程中我们需要持久才能进行数据库的访问操作。 2、JDBC Hibernate MyBatis进行持久层过程中存在大量的代码冗余。 3、Spring基于模板设计模式对这些持久层技术呢作出了封装。 ps注释&…

[附源码]计算机毕业设计疫情期间小学生作业线上管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Android App】在线直播之搭建WebRTC的服务端(图文解释 简单易懂)

有问题或需要源码请点赞关注收藏后评论区留言私信~~~ 一、WebRTC的系统架构 WebRTC(网页即时通信)是一个支持浏览器之间实时音视频对话的新型技术,WebRTC体系由应用于实时通信的编程接口和一组通信协议组成,已成为互联网流媒体通…

(八) 共享模型之管程【ReentrantLock】

相对于 synchronized 具备如下特定: (1)可中断 (2)可以设置超市时间 (3)可以设置为公平锁 (4)支持多个条件变量 与 synchronized 一样,都支持可重入 基本语法…

回归预测 | MATLAB实现基于RF随机森林的用水量预测(多因素、多指标)

回归预测 | MATLAB实现基于RF随机森林的用水量预测(多因素、多指标) 目录 回归预测 | MATLAB实现基于RF随机森林的用水量预测(多因素、多指标)预测效果基本介绍模型原理程序设计参考资料预测效果 基本介绍 将随机森林回归原理应用到了预测领域,构建了基于随机森林的预测模型,…

Spring-Cloud-Zipkin-05

前言 1、链路追踪由来:在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个请求都会开成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引导起…

一文读懂vue3和vue2的API风格对比

Vue3 组合式 API(Composition API) 主要用于在大型组件中提高代码逻辑的可复用性。 传统的组件随着业务复杂度越来越高,代码量会不断的加大,整个代码逻辑都不易阅读和理解。 Vue3 使用组合式 API 的地方为 setup。 在 setup 中…

JavaEE-多线程初阶1

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录1.认识线程1.1概念1.2多线程程序1.3创建线程2.Thread类及常见方法2.1Thread 的常见构造方法2.2 Thread 的几个常见属性2.3中断…

在本地利用服务器显卡跑代码

除了使用xshell等连接服务器以外,pycharm也可以连接服务器,在服务器上运行代码,上传下载文件等操作。 参考:https://cloud.tencent.com/developer/article/1738482 步骤如下: 1、pycharm工具栏:Tools– D…

基于51单片机的压力监测仪(MPX4115)(Proteus仿真+程序)

编号:28 基于51单片机的压力监测仪(MPX4115) 功能描述: 本设计由51单片机最小系统MPX4115压力传感器ADC0832模块液晶1602模块 1、主控制器是AT89C82单片机 2、MPX4115压力传感器采集气压力,通过ADC0832模数转换器进行A/D转换,读…

Java语言与系统设计课程实验报告

做个课设做的我人间失格,写了一晚上没保存,真是哭死 一、目的与要求 (一)、实验目的 掌握Java语言与系统设计的基本思路和方法。 利用所学的基本知识和技能,解决简单的Java语言与系统设计问题。 (二&…