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

Android端Firebase推送通知:Postman发送无法即时送达求助

解决Postman发送FCM通知在Android后台/关闭时延迟、丢失的问题

先修正Postman请求体的几个关键问题,这是推送异常的主要原因:

一、调整Postman请求体配置

你的请求体存在参数位置错误、字段取值不合理的问题,直接导致FCM无法按高优先级推送,修正后的请求体如下:

{
  "to": "你的设备有效FCM令牌",
  "priority": "high",
  "notification": {
    "title": "title notification",
    "body": "DEMO TEXT !!",
    "subtitle": "Sending app"
  },
  "data": {
    "OrganizationId": "1",
    "bodyText": "New Announcement assigned",
    "organization": "DOS",
    "sound": "app_sound.wav"
  },
  "android": {
    "priority": "high",
    "ttl": "86400s"
  }
}

修正说明:

  • 根层级添加priority: "high":这是FCM识别高优先级推送的核心,之前放在notification或data内不生效,高优先级消息不会被Android系统后台节流
  • 调整ttl取值:你之前设置为1秒,消息未即时送达就会被直接丢弃,改为86400秒(1天)给足送达缓冲时间
  • 自定义参数移至data字段:notification仅支持FCM标准字段,自定义的OrganizationId放在data内才能被正确解析
  • 明确Android平台优先级:单独配置android.priority: "high",确保Android系统精准识别高优先级消息,避免厂商系统拦截

二、Ionic+Capacitor客户端配套配置

仅修改请求体不够,客户端需确保后台/关闭状态下能正常接收通知:

1. 配置AndroidManifest和通知渠道

在android/app/src/main/AndroidManifest.xml中添加权限和默认渠道配置:

<!-- 允许应用重启后接收通知、唤醒设备 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- 指定默认高优先级通知渠道 -->
<meta-data
    android:name="com.google.firebase.messaging.default_notification_channel_id"
    android:value="@string/default_notification_channel_id" />

在android/app/src/main/res/values/strings.xml中定义渠道ID:

<string name="default_notification_channel_id" translatable="false">high_priority_channel</string>

2. 代码中创建高优先级通知渠道

应用启动时创建高优先级渠道,避免系统静音或延迟通知:

import { FirebaseNotifications } from '@capacitor-firebase/notifications';

async function initNotificationChannel() {
  await FirebaseNotifications.createChannel({
    id: 'high_priority_channel',
    name: '紧急通知',
    description: '用于重要公告推送',
    importance: 5, // Android最高优先级
    visibility: 'public',
    sound: 'app_sound.wav' // 音频文件需放在android/app/src/main/res/raw目录下
  });
}

// 在应用初始化阶段调用
initNotificationChannel();

3. 正确监听通知事件

注册通知监听,即使应用关闭,系统也会自动展示通知:

import { FirebasePush } from '@capacitor-firebase/push';

// 监听通知接收(后台/关闭时系统自动展示通知,此处可处理自定义数据)
FirebasePush.addListener('notificationReceived', (event) => {
  console.log('收到通知:', event);
  if (event.data?.OrganizationId) {
    // 处理自定义业务逻辑
  }
});

// 初始化时获取FCM令牌
async function initPush() {
  const { token } = await FirebasePush.getToken();
  console.log('FCM令牌:', token);
  // 将令牌传递至服务器保存,用于后续推送
}

initPush();

三、其他排查要点

  • 确认to字段的FCM令牌为当前设备的有效令牌,令牌过期会导致推送失败
  • Postman的Authorization密钥必须是Firebase项目的服务器密钥(可在Firebase控制台>项目设置>云消息传递中获取)
  • 国产安卓手机(小米、华为等)需将应用加入后台白名单,允许自启动和后台运行,否则系统会拦截后台通知
  • 可在Firebase控制台>云消息传递>报告中查看推送状态,确认消息是被送达还是被系统拒绝

内容的提问来源于stack exchange,提问作者Jorge D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:33:15