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

Flutter华为Push插件新版本无法捕获远程通知点击事件

解决华为Push Kit Flutter插件远程通知点击事件捕获问题

1. 先确认插件版本

把pubspec.yaml里的huawei_push升级到官方最新稳定版,旧版本可能存在远程通知点击回调未触发的兼容性问题。

2. 正确注册远程通知点击回调

在Flutter初始化逻辑里(比如main.dart的initState方法),注册插件内置的onNotificationOpenedApp监听,这个回调专门处理远程通知的点击事件:

@override
void initState() {
  super.initState();
  _initPushService();
}

void _initPushService() async {
  // 初始化Push服务
  await PushService.init();
  
  // 监听远程通知点击事件
  PushService.onNotificationOpenedApp.listen((RemoteMessage message) {
    // 从message中提取data参数
    if (message.data.isNotEmpty) {
      // 处理你payload里的data格式:原payload中data是单引号包裹的字符串,需转成标准JSON格式解析
      String rawData = message.data['data'];
      Map<String, dynamic> parsedData = jsonDecode(rawData.replaceAll("'", "\""));
      String deepLink = parsedData['deepLink'];
      // 这里写你的DeepLink业务逻辑
      print('点击通知获取到DeepLink: $deepLink');
    }
  });
}

3. 优化推送Payload配置

你的现有payload有两处可调整的地方:

  • data字段格式:建议直接用JSON对象而非字符串,避免额外的解析步骤,修改后payload示例:
{
   "message":{
      "data":{
         "deepLink": "https://google.com"
      },
      "token":[
         "<你的设备Token>"
      ],
      "android":{
         "notification":{
            "title":"测试标题",
            "body":"测试内容",
            "click_action": {
                "type": 3
            },
            "foreground_show": false
         }
      }
   }
}
  • click_action配置:type=3表示通知点击后打开应用内页面,这个配置是触发onNotificationOpenedApp回调的前提,无需额外配置Intent。

4. 基础配置排查

  • 确认AndroidManifest.xml中已包含官方示例默认的HuaweiPushActivity配置,不要自定义NotificationClickListener覆盖插件默认逻辑
  • 升级测试设备(华为P8 Lite)上的华为服务到最新版本,旧版本服务可能存在推送逻辑兼容问题

额外测试建议

分别测试应用在前台、后台、完全杀死三种状态下的通知点击行为,确保回调在所有场景下都能触发。

内容的提问来源于stack exchange,提问作者Alex Usmanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:42:46