You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Awesome Notifications点击动作按钮时如何打印Payload数据

解决Awesome Notifications动作按钮点击时访问Payload数据的问题

方案1:发送通知时将Payload数据嵌入指定字段

不管是本地通知还是远程推送,发送阶段需要把要传递的Payload数据,要么塞进每个动作按钮的actionData字段,要么放到通知全局的payload字段里。

远程推送示例(以Firebase推送为例)

构造推送Payload时,要按Awesome Notifications的格式嵌套动作按钮数据:

{
  "notification": {
    "title": "测试通知",
    "body": "点击按钮查看数据"
  },
  "data": {
    "global_key": "global_value"
  },
  "android": {
    "notification": {
      "actions": [
        {
          "actionType": "Default",
          "actionKey": "VIEW_DATA",
          "buttonText": "查看数据",
          "actionData": {
            "payload_key": "payload_value"
          }
        }
      ]
    }
  }
}

本地通知示例(Flutter)

创建通知时直接指定全局Payload和按钮专属数据:

await AwesomeNotifications().createNotification(
  content: NotificationContent(
    id: 1,
    channelKey: 'basic_channel',
    title: '测试通知',
    body: '点击按钮查看数据',
    payload: {'global_key': 'global_value'} // 全局Payload
  ),
  actionButtons: [
    NotificationActionButton(
      key: 'VIEW_DATA',
      label: '查看数据',
      actionType: ActionType.Default,
      actionData: {'payload_key': 'payload_value'} // 按钮专属数据
    )
  ]
);

方案2:在onReceivedAction回调中提取数据

ReceivedAction对象本身就包含了两处可读取的Payload数据,直接读取即可:

Future<void> onReceivedActionMethod(ReceivedAction receivedAction) async {
  // 读取按钮专属的actionData
  if (receivedAction.actionData != null) {
    print('按钮专属Payload: ${receivedAction.actionData}');
    var targetValue = receivedAction.actionData!['payload_key'];
    print('提取到的按钮数据: $targetValue');
  }

  // 读取通知全局的payload
  if (receivedAction.notification?.content?.payload != null) {
    print('全局Payload: ${receivedAction.notification!.content!.payload}');
    var globalValue = receivedAction.notification!.content!.payload!['global_key'];
    print('提取到的全局数据: $globalValue');
  }
}

关键注意点

  • 远程推送时,要确保推送Payload的格式符合Awesome Notifications的要求,尤其是Android端的actions字段必须正确嵌套在android.notification下
  • Firebase推送的data字段会自动映射到通知的全局payload中,无需额外处理
  • 测试前务必确认发送的通知确实携带了actionData或payload,避免因发送端数据缺失导致读取失败

内容的提问来源于stack exchange,提问作者Akshu BaWa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:37:06