如何配置Azure Notification Hubs模板为推送通知添加交互按钮
实现方案
要给2FA场景添加通知操作按钮,需要分别按照Android、iOS平台的推送规范调整Azure Notification Hubs模板,同时配合客户端做少量动作注册配置,具体调整如下:
Android端模板调整(适配FCM标准协议)
你原来的模板只包含data静默字段,要显示系统级操作按钮,需要补充notification节点的动作配置,同时传入2FA请求唯一标识做后续校验。
调整后可直接使用的模板字符串(和你原有格式一致,转义后可直接配置到Azure后台):
"{\"data\":{\"message\":\"$(message)\", \"title\": \"$(title)\", \"requestId\":\"$(requestId)\"},\"notification\":{\"title\":\"$(title)\",\"body\":\"$(message)\",\"android\":{\"notification\":{\"actions\":[{\"title\":\"接受\",\"pressAction\":{\"id\":\"2fa_accept\"}},{\"title\":\"拒绝\",\"pressAction\":{\"id\":\"2fa_reject\"}}]}}}}"
如果你的Android端是完全接收data字段后自行构建本地通知,不需要FCM自动渲染通知,可以不用加notification节点,只需要把动作标识、requestId参数放到data结构里,客户端拿到数据后自行构建带按钮的通知即可。
iOS端模板调整(适配APNs协议)
iOS的交互式通知按钮不直接写在推送payload里,需要客户端提前注册通知类别(Category),推送时只需要在aps节点指定对应的类别ID即可显示预先配置好的按钮。
调整后可直接使用的模板字符串:
"{\"aps\":{\"alert\": {\"title\":\"$(title)\",\"body\":\"$(message)\"},\"category\":\"2fa_login_category\",\"sound\":\"default\"},\"requestId\":\"$(requestId)\"}"
你需要在iOS应用启动时,提前向系统注册ID为2fa_login_category的通知类别,给这个类别绑定两个交互动作:ID为2fa_accept的「接受」按钮、ID为2fa_reject的「拒绝」按钮即可,不需要额外修改模板内容。
配套配置要求
- 发送2FA类推送时,除了原有的
title、message占位符参数,必须额外传入requestId参数,值为后端生成的全局唯一、无规律的2FA请求ID(推荐用GUID),用户点击按钮后客户端要把这个ID和操作类型一起回传给后端做合法性校验,避免伪造操作。 - 客户端需要监听通知按钮点击事件,拿到用户选择的动作ID和
requestId后,调用后端的2FA校验接口完成登录确认/拒绝逻辑。 - 如果你的Android端接入了华为、小米、OPPO等国内厂商自有推送通道,需要把上述模板里的
actions配置替换为对应厂商的推送按钮字段格式,上面给出的是谷歌FCM通道的标准配置。 - 建议给2FA通知设置最高推送优先级,避免被系统电池优化策略拦截、收纳到通知盒子导致用户无法及时看到。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

