Thanox 情景模式通知事件 Facts:推送、通知、快捷方式
推送消息(GCM / FCM)
当设备收到 Google Cloud Messaging(GCM)或 Firebase Cloud Messaging(FCM)推送时触发。
| Facts 参数 | 类型 | 含义 |
|---|---|---|
fcmPushMessageArrived | Boolean | 收到 GCM / FCM 推送 |
pkgName | String | 推送所属的应用包名 |
条件示例
# 任何 FCM 推送到达
fcmPushMessageArrived == true
# 微信的推送到达
fcmPushMessageArrived == true && pkgName == "com.tencent.mm"
通知事件
Android 系统的通知栏事件。比 FCM 推送更广泛——所有应用的通知(包括本地通知、系统通知)都会触发。
| Facts 参数 | 类型 | 含义 |
|---|---|---|
notificationAdded | Boolean | 新通知到达 |
notificationUpdated | Boolean | 已有通知更新 |
notificationRemoved | Boolean | 通知被移除 |
pkgName | String | 通知所属的应用包名 |
userId | Int | 通知所属用户 ID |
notificationTitle | String | 通知标题文本 |
notificationContent | String | 通知内容文本 |
notification | NotificationRecord | 完整通知记录对象(更详细) |
条件示例
# 任何通知到达
notificationAdded == true
# 微信通知到达
notificationAdded == true && pkgName == "com.tencent.mm"
# 通知包含特定关键词
notificationAdded == true && notificationContent.contains("外卖")
动作中使用
[
{
"name": "Watch Notifications",
"description": "所有通知事件 Toast 提示",
"priority": 1,
"condition": "notificationAdded || notificationRemoved || notificationUpdated",
"actions": [
"ui.showShortToast(\"通知事件 \" + pkgName + \": \" + notificationContent);"
]
}
]
注意 MVEL 的 ||(或)运算符和字符串拼接 +——这些都是 MVEL 内置的表达式语法,类似 Java。
快捷方式触发
你可以创建一个"有意义"的桌面快捷方式,点击它时 Thanox 会发布一个特殊的 facts 事件,让情景模式可以监听并执行对应的动作。
触发流程
- 在 Thanox → 情景模式 → 快捷方式引擎中创建一个快捷方式
- 给快捷方式起一个有意义的名字(比如"一键锁屏")和值(比如 "turn screen off")
- Thanox 会生成一个桌面快捷方式图标
- 你可以创建多条情景模式规则来监听这个快捷方式的触发
Facts 参数
| Facts 参数 | 类型 | 含义 |
|---|---|---|
shortcutLaunched | Boolean | 快捷方式被点击了 |
shortcutValue | String | 快捷方式的值(你创建时设置的那个字符串) |
实战示例:一键锁屏
[
{
"name": "Profile Shortcut Power Off",
"description": "点击一键锁屏快捷方式时锁屏",
"priority": 2,
"condition": "shortcutLaunched == true && shortcutValue == \"turn screen off\"",
"actions": [
"power.sleep(0);"
]
}
]
这个规则配合 Thanox 生成的桌面快捷方式,就能实现真正的一键锁屏。
Facts 总结
到这里,已经覆盖了 Thanox 情景模式引擎的三类 facts:
| 分类 | 覆盖的事件 |
|---|---|
| 应用事件 | 安装/卸载/更新、切换、任务清理、Activity 生命周期、应用被杀 |
| 系统事件 | 屏幕开关、电量变化、蓝牙状态/连接、WiFi 变化、系统启动 |
| 通知与快捷方式 | FCM 推送、通知事件、快捷方式触发 |
这些 facts 组合起来,你可以在 condition 里写出非常精准的触发条件。接下来看看 actions 里能做什么——Thanox 提供了哪些 handle 能力。