ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ntfy 如何用 broadcast 动作向 Tasker 等自动化应用发送 Android 广播

ntfy 如何用 broadcast 动作向 Tasker 等自动化应用发送 Android 广播 ntfy 如何用 broadcast 动作向 Tasker 等自动化应用发送 Android 广播【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy假设你已经用 ntfy 给手机推送通知现在想让通知上多一个动作按钮别人或监控脚本发一条消息你在手机上点一下按钮就能触发 Tasker、MacroDroid 等自动化应用里预置好的任务比如拍照、开关 App、修改系统设置。ntfy 的broadcast动作做的就是这件事——在通知上挂一个按钮点按钮时由 ntfy Android App 发出一个 Android broadcast intent由自动化应用接收并执行。该动作仅在 Android 上受支持文档标注_Supported on:_ Android。broadcast 动作的工作方式整条链路分三步发布端向某个 topic 发一条消息并通过X-Actions头别名Actions、Action或 JSON 的actions字段声明一个action为broadcast的动作ntfy Android App 收到消息后弹出通知通知上显示动作按钮按钮文案就是label你点击按钮时App 广播一个 Android intent。默认的 intent action 是io.heckel.ntfy.USER_ACTION可以通过intent参数改成别的名字intent 的 extras 只能通过extras参数传入且目前只支持字符串类型的 extras。自动化应用Tasker、MacroDroid 等只要在本地监听这个 intent action就能在按钮被点时执行对应任务。前提条件手机上已安装 ntfy Android App并已订阅将要接收消息的 topic手机订阅文档手机上已安装能捕获 broadcast intent 的自动化应用。文档以 [MacroDroid] 和 [Tasker] 为例但原文说明any app that can catch broadcasts is supported发布端能执行curl或 ntfy CLI安装方式见 安装文档topic 相当于消息通道的密码文档建议选一个不容易猜到的名字见 publish 文档。在自动化应用中监听广播文档在 自动化应用集成 一节用截图演示了 Tasker 和 MacroDroid 的接入配置并明确说明动作按钮的接入方式与该节演示完全相同唯一区别是 intent action 要用io.heckel.ntfy.USER_ACTION。因此配置路径是Tasker创建一个 Profile/事件触发条件为 Intent 广播action 填io.heckel.ntfy.USER_ACTION然后在其 Task 中编写要执行的操作。Tasker 侧事件配置的文档截图示例MacroDroid创建监听 intent 的宏时文档特别提醒要填上包名io.heckel.ntfyotherwise intents may be silently swallowed否则 intent 可能被静默吞掉表现为按钮点了没反应。如果你用intent参数把广播的 action 名改成了其他值比如com.example.AN_INTENT自动化应用一侧也必须监听这个新名字而不是默认的io.heckel.ntfy.USER_ACTION。发布带 broadcast 动作的消息主路径curl 加 X-Actions 头以下命令直接取自 publish 文档把 topicwifey换成你自己的 topic 即可curl \ -d Your wife requested you send a picture of yourself. \ -H Actions: broadcast, Take picture, extras.cmdpic, extras.camerafront \ ntfy.sh/wifey动作部分用的是简短格式文档给出的 broadcast 简短格式为broadcast, label[, extras.paramvalue][, intentintent][, cleartrue]上面例子里Take picture是按钮文案extras.cmdpic、extras.camerafront会以字符串 extras 的形式随 intent 传给自动化应用方便在 Tasker/MacroDroid 里根据cmd的值区分该执行哪个任务。你也可以一律使用keyvalue写法例如actionbroadcast, labelTake picture, extras.cmdpic效果相同。broadcast动作支持的完整字段字段必填类型默认值说明action✔string-动作类型必须是broadcastlabel✔string-通知上动作按钮的文案intent-stringio.heckel.ntfy.USER_ACTION要广播的 Android intent 名extras-字符串 map-Android intent extras目前只支持字符串 extrasJSON 发布时写成 map简单格式用extras.paramvalueclear-booleanfalse点按钮后清除该通知替代方式ntfy CLIntfy publish \ --actionsbroadcast, Take picture, extras.cmdpic, extras.camerafront \ wifey \ Your wife requested you send a picture of yourself.替代方式JSON 发布以 JSON 形式发布时extras直接写成 mapcurl ntfy.sh \ -d { topic: wifey, message: Your wife requested you send a picture of yourself., actions: [ { action: broadcast, label: Take picture, extras: { cmd: pic, camera: front } } ] }一条通知最多定义3 个用户动作在头格式里用分号;分隔多个动作例如view, Open portal, https://...; broadcast, Take picture, extras.cmdpic。验证结果成功的路径按文档描述如下消息发出后手机上弹出通知且通知上出现label指定的动作按钮上面第一张图即文档中Notification with two user actions的示例截图点击按钮如示例中的 Take picture后App 发出 intent action 为io.heckel.ntfy.USER_ACTION的广播extras 中带cmdpic、camerafrontTasker/MacroDroid 监听到该 intent 后执行你配置好的任务。如果按钮点了没反应文档给出过的直接提示是 MacroDroid 场景下检查是否填写了包名io.heckel.ntfy如果用了自定义intent值则检查监听侧注册的名字是否与发布侧一致。限制与边界只支持字符串 extras文档原文为 Currently, only string extras are supportedbroadcast动作只在 Android 上受支持iOS/桌面端不会渲染出可发广播的按钮每条通知最多 3 个动作本文只覆盖点通知按钮 → 发广播给自动化应用这一个方向。反方向的两个机制——监听io.heckel.ntfy.MESSAGE_RECEIVED响应收到的消息、以及用io.heckel.ntfy.SEND_MESSAGE从自动化应用发消息到 ntfy——是 自动化应用一节描述的独立功能不在本文范围内。进一步细节可参考 publish 文档的 Send Android broadcast 小节与 subscribe/phone 文档的 Automation apps 小节后者提供了带截图的 Tasker/MacroDroid 完整配置步骤。【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进