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

FCM推送通知接收时无法唤醒iOS休眠设备问题咨询

解决iOS设备休眠锁屏时FCM通知无法唤醒设备的问题

这个问题我之前帮不少开发者排查过,核心原因是FCM消息的APNs优先级配置不正确,或者通知类型是静默通知(不会触发设备唤醒)。下面给你一步步的解决方案:


1. 必须设置APNs高优先级(apns-priority: 10)

iOS的APNs只有高优先级(10)的通知才能唤醒休眠中的设备,低优先级(5)的通知会被延迟投递,且不会触发屏幕唤醒。在Firebase Cloud Functions发送FCM消息时,你需要显式配置APNs的优先级:

在构造消息时,添加apns字段,设置headers里的apns-priority为10,同时确保aps payload包含可见的通知内容:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

exports.sendTargetedNotification = functions.https.onRequest(async (req, res) => {
  const targetDeviceToken = req.body.deviceToken;
  
  const message = {
    token: targetDeviceToken,
    notification: {
      title: "新通知提醒",
      body: "你有一条未读消息"
    },
    apns: {
      headers: {
        "apns-priority": "10" // 关键:高优先级才能唤醒休眠设备
      },
      payload: {
        aps: {
          alert: {
            title: "新通知提醒",
            body: "你有一条未读消息"
          },
          sound: "default" // 可选,但添加声音能提升唤醒的可靠性
        }
      }
    }
  };

  try {
    const sendResult = await admin.messaging().send(message);
    res.status(200).send(`通知发送成功: ${sendResult}`);
  } catch (error) {
    res.status(500).send(`发送失败: ${error.message}`);
  }
});

2. 避免使用静默通知

如果你的通知只设置了content-available: 1(用于后台数据同步),这类静默通知是不会唤醒设备屏幕的——它们的设计目的就是在后台悄悄更新,不打扰用户。如果需要唤醒设备,必须包含alert字段(标题/内容),确保是可见通知。

3. 检查iOS设备的通知权限与系统设置

  • 确认用户已经给应用授予了「允许通知」权限,且开启了「在锁定屏幕上显示」选项;
  • 检查设备是否开启了「勿扰模式」,勿扰模式下所有通知都不会唤醒设备;
  • 确保设备没有开启「低电量模式」,部分设备在低电量模式下会限制通知唤醒行为。

4. 验证APNs证书配置

如果是发布到App Store的正式版本应用,要确保Firebase控制台中配置的是生产环境的APNs证书;测试版本对应沙盒证书。证书不匹配可能导致通知投递行为异常。


按照上面的步骤调整后,休眠中的iOS设备应该就能被FCM通知正常唤醒了。

内容的提问来源于stack exchange,提问作者Shahin Firouzbakht

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:58