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

Azure通知中心Android FCMv1推送消息无法正常工作排查

Android推送失效的代码问题分析与修复

你的代码存在FCM V1消息结构错误,这是导致Android推送无法生效的核心原因,具体问题和修复方案如下:

问题点

你当前的消息体在message字段里嵌套了FCM所需的内容,但createFcmV1Notification要求直接传入FCM V1标准的消息负载,不需要额外的message外层包裹。这种结构不匹配会导致Azure Notification Hubs发送的推送无法被Firebase正确解析。

另外,当前代码没有显式设置Android推送的优先级,可能导致后台状态下推送延迟或无法触发。

修复后的代码

import { createFcmV1Notification } from "@azure/notification-hubs";
import { createClientContext, sendNotification } from "@azure/notification-hubs/api";

const androidPushToken = context.device.pushToken;

const clientContext = createClientContext(
  process.env.PUSH_CONNECTION_STRING || "",
  process.env.PUSH_HUB_NAME || ""
);

// 修正FCM V1消息结构:直接使用顶层字段,去掉外层message包裹
const notificationBody = {
  notification: {
    title: "Default title",
    body: "Default message",
  },
  android: {
    data: { test: "test" },
    priority: "high" // 显式设置高优先级,确保推送及时到达
  },
};

// 直接传入修正后的消息体,无需JSON.stringify(createFcmV1Notification会自动处理序列化)
const notification = createFcmV1Notification(notificationBody);

const res = await sendNotification(clientContext, notification, {
  deviceHandle: androidPushToken,
});

关键说明

  • 消息结构修正:FCM V1的API要求消息负载直接包含notification、android等顶层字段,不需要嵌套在message对象中。原代码多了一层不必要的包装,导致Firebase无法识别有效内容。
  • 移除手动JSON序列化:createFcmV1Notification会自动处理消息体的序列化,无需提前用JSON.stringify转换,手动序列化反而会导致格式错误。
  • 添加优先级设置:显式设置android.priority: "high"可以确保推送在Android设备后台状态下也能及时弹出通知,避免被系统限流。

验证修复后,Android设备应该能正常接收推送,和Firebase测试的结果一致。

内容的提问来源于stack exchange,提问作者apes-together-strong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:21:01