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

Unity iOS端前台无法接收无通知栏的Firebase云消息问题

解决iOS前台无法接收FCM纯数据消息的问题

问题原因

iOS的APNS推送机制与Android存在差异:仅包含data字段、无notification字段的纯数据消息,在App前台运行时默认不会被APNS投递到App进程,必须显式配置content-available: 1标记,同时开启App的后台远程通知权限,才能触发Firebase的回调。

解决方案

1. 修改后端Firebase Functions的消息结构

在发送消息时添加iOS专属的APNS配置,强制APNS将数据消息投递到前台App:

const message={
    data:{
        code:code.toString(),
        data:undefined
    },
    // 添加iOS APNS核心配置
    apns: {
        payload: {
            aps: {
                contentAvailable: 1 // 告知APNS此消息可投递到前台App
            }
        },
        // 设置正常优先级,避免高优先级被系统限制
        headers: {
            "apns-priority": "5"
        }
    }
}
if(data!=null)
{
    if(typeof data !=='string')
    {
        data=JSON.stringify(data);
    }
    message.data.data=data;
}
await messaging.sendToDevice(tokens,message).
catch((err:any)=>{
    error(err);
    return -1;
});

2. 配置iOS项目的后台权限

在Xcode中为项目开启后台远程通知权限:

  • 打开Xcode项目,进入Signing & Capabilities标签页
  • 点击+ Capability,搜索并添加Background Modes
  • 勾选Remote notifications选项

3. 确认Unity客户端初始化时机

确保Firebase消息回调的注册足够早,例如在Awake方法中调用Init(),避免因注册过晚错过消息:

void Awake()
{
    // 尽早初始化FCM回调
    Init();
}

验证步骤

  1. 重新部署修改后的Firebase Functions代码
  2. 在iOS设备上保持App前台运行状态
  3. 发送测试消息,检查OnMessageReceived回调是否触发
  4. 查看Xcode控制台日志,确认无FCM相关投递错误

内容的提问来源于stack exchange,提问作者Артем Архаин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:05:01