一、背景
随着电信诈骗手段不断升级,传统的用户主动检测方式已经无法满足实时防护需求。
例如:
- 用户收到诈骗短信后主动复制检测;
- 用户发现异常聊天记录后主动上传分析;
- 用户打开 App 后进行风险查询。
这些方式存在明显滞后性。
因此,在"灵犀安全"反诈 App 的设计中,我希望实现一种主动式安全防护机制:
在用户无感知的情况下,实时监听系统通知内容,对潜在诈骗信息进行 AI 风险分析,并及时向用户以及绑定守护人发送预警。
整体架构如下:
手机系统通知
|
↓
NotificationListenerService
|
↓
原生 Android 插件
|
↓
UniApp 前端
|
↓
RAG 风险分析服务
|
↓
WebSocket实时推送结果
|
↓
风险提醒 / 守护通知
二、为什么选择 NotificationListenerService?
Android 系统中的通知属于系统级事件,普通 App 无法直接读取其他应用通知。
例如:
- 微信消息
- 短信通知
- 支付宝通知
- 浏览器推送
- 银行 App 风险提醒
如果想获取这些内容,需要使用 Android 提供的:
NotificationListenerService
它是 Android 4.3(API 18) 引入的系统服务。
它允许应用监听设备上的通知变化。
主要能力:
| 能力 | 说明 |
|---|---|
| 监听通知发送 | 收到新通知时触发 |
| 获取通知来源 | 知道哪个 App 产生通知 |
| 获取通知文本 | 读取标题和内容 |
| 监听通知撤回 | 通知取消事件 |
三、NotificationListenerService 工作流程
整体流程:
Android System
|
|
Notification Manager
|
|
NotificationListenerService
|
|
onNotificationPosted()
|
|
解析Notification
|
|
数据上传服务器
当手机收到一条通知:
例如:
微信:
【XX银行】
您的账户异常,请点击链接验证身份:
http://xxx.com
系统会调用:
onNotificationPosted(StatusBarNotification sbn)
开发者可以从参数中获取通知对象。
四、核心实现
1. 创建 NotificationListenerService
Android 原生代码:
class MyNotificationListenerService :
NotificationListenerService() {
override fun onNotificationPosted(
sbn: StatusBarNotification
) {
val packageName =
sbn.packageName
val notification =
sbn.notification
val extras =
notification.extras
val title =
extras.getString(
Notification.EXTRA_TITLE
)
val text =
extras.getString(
Notification.EXTRA_TEXT
)
Log.d(
"Notify",
"$packageName $title $text"
)
}
}
当任何应用产生通知时:
onNotificationPosted()
都会被触发。
五、注册系统服务
Service 必须在 AndroidManifest.xml 中声明。
<service
android:name=".MyNotificationListenerService"
android:label="通知监听服务"
android:permission=
"android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action
android:name=
"android.service.notification.NotificationListenerService"/>
</intent-filter>
</service>
关键权限:
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
它告诉 Android:
该 Service 需要访问系统通知。
六、用户授权机制
Android 不允许 App 静默开启通知监听。
必须让用户手动授权。
跳转系统设置:
startActivity(
Intent(
Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS
)
)
用户开启:
设置
↓
通知使用权
↓
灵犀安全
↓
允许
之后系统才会回调通知。
七、UniApp + Android 原生插件通信
由于项目采用:
UniApp + UTS
开发 Android 应用。
但是:
UniApp 本身无法直接调用:
NotificationListenerService
因此采用:
UniApp
|
|
UTS插件
|
|
Kotlin原生代码
|
|
Android系统API
架构:
index.uvue
|
|
notificationGuard
|
|
MyNotificationListenerService.kt
|
|
Android Framework
八、UTS 插件封装
原生插件暴露方法:
object NotificationGuard {
fun start(){
// 启动监听逻辑
}
fun getStatus():Boolean{
return true
}
}
UniApp 调用:
import {
notificationGuard
}
from "@/uni_modules/notificationGuard"
notificationGuard.start()
这样前端无需关注 Android 底层实现。
九、通知数据处理
监听到通知后,需要进行数据清洗。
原始数据:
{
"package":
"com.tencent.mm",
"title":
"微信",
"content":
"您的账户被冻结,请点击链接"
}
转换:
{
"type":"notification",
"source":"微信",
"content":
"您的账户被冻结,请点击链接",
"timestamp":
1781234567
}
然后发送给后端。
十、接入 RAG 风险分析系统
在反诈 App 中,通知监听并不是最终目的。
核心目标:
自动发现诈骗风险。
因此通知数据会进入 RAG 风险分析流程。
整体链路:
通知监听
↓
文本提取
↓
风险知识库检索
↓
LLM语义分析
↓
风险等级判断
↓
WebSocket返回结果
例如:
输入:
客服通知:
您的账户涉嫌违规,
请下载安全软件处理
RAG:
检索:
冒充客服诈骗案例库
远程控制诈骗案例库
模型分析:
返回:
{
"riskLevel":"HIGH",
"reason":
"疑似冒充客服诈骗",
"suggestion":
"立即停止操作"
}
十一、WebSocket实时风险推送
因为风险分析是异步任务:
POST提交分析
返回taskId
后台AI分析
WebSocket推送结果
流程:
App
|
|
提交通知内容
|
|
RAG服务
|
|
taskId
|
|
WebSocket
|
|
风险结果
例如:
{
"type":
"RAG_RESULT",
"riskLevel":
"HIGH",
"message":
"发现诈骗风险"
}
App收到:
HIGH
↓
播放风险警告音
↓
弹窗提醒
↓
通知守护人
十二、后台持续监听问题
Android 系统对于后台运行限制非常严格。
主要问题:
1. Doze模式
Android 进入休眠后:
- 限制后台任务
- 限制网络请求
解决:
使用:
NotificationListenerService
+
前台服务
+
厂商后台权限
2. 应用被杀问题
部分厂商:
例如:
- 小米
- 华为
- OPPO
会主动清理后台。
因此需要:
引导用户开启:
后台运行权限
自启动权限
电池优化白名单
十三、隐私安全设计
通知监听涉及高度敏感数据。
因此设计:
1. 最小化采集
只上传:
通知文本
风险相关字段
不上传:
联系人
账号密码
完整聊天记录
2. 数据脱敏
例如:
原始:
您的银行卡6222 8888 9999 0000被冻结
处理:
您的银行卡 ****0000被冻结
3. 用户可控
提供:
通知监听开关
风险检测开关
数据删除功能
十四、技术总结
通过 Android 原生能力与跨端框架结合,实现了一套主动式反诈感知系统:
核心技术:
| 模块 | 技术 |
|---|---|
| 移动端 | UniApp + UTS |
| 系统通知监听 | NotificationListenerService |
| Android通信 | Native Plugin |
| 实时通信 | WebSocket |
| AI分析 | RAG + LLM |
| 后台运行 | Foreground Service |
| 风险推送 | 异步任务架构 |
相比传统安全检测:
用户发现诈骗
↓
主动检测
↓
获得结果
该方案:
系统产生风险信息
↓
自动捕获
↓
AI实时分析
↓
主动预警
实现了从:
"用户发现风险"
到:
"系统提前发现风险"
的转变。
后续优化方向
未来可以进一步扩展:
- 剪贴板实时检测
监听用户复制内容:
银行卡号
网址
转账信息
自动分析风险。
- 多模态诈骗检测
加入:
- 图片 OCR
- 语音识别
- 二维码解析
- 端侧模型推理
使用:
- MobileLLM
- ONNX Runtime
降低隐私风险。
总结
Android 系统通知监听是移动端安全应用的重要能力。
通过:
NotificationListenerService + UniApp UTS 原生插件 + RAG 风险分析 + WebSocket实时推送
可以构建一个真正意义上的实时智能反诈助手。
在"灵犀安全"项目中,该技术成为连接系统事件感知层与AI决策层的重要桥梁,也是整个主动防护体系的核心入口。