FCM通知中willPresentNotification方法未被调用问题求助
解决FCM服务器通知不触发
willPresentNotification的问题 我之前也碰到过一模一样的问题——Firebase控制台发通知能正常触发前台展示回调,但服务器发的就没反应,核心问题基本都出在FCM消息的payload格式上。结合你的代码,给你梳理下具体解决步骤:
1. 先搞懂两种FCM消息类型的区别
FCM有两种核心消息类型,它们在APP前台的处理逻辑完全不同:
- 通知消息(Notification Message):由FCM自动转发给APNS,系统会自动处理通知展示,APP在前台时会触发
willPresentNotification。Firebase控制台发送的就是这种类型。 - 数据消息(Data Message):完全由APP自行处理,系统不会自动展示通知,前台时只会触发
didReceiveRemoteNotification,不会走willPresentNotification。
你的服务器大概率是发送了纯数据消息,或者payload格式不符合通知消息的要求。
2. 调整服务器的FCM Payload结构
要让服务器发送的通知在前台触发willPresentNotification,必须保证payload包含notification字段(或者针对iOS的APNS专属配置)。下面是一个标准的有效payload示例:
{ "to": "你的FCM设备令牌", "notification": { "title": "服务器通知标题", "body": "服务器通知内容", "sound": "default" }, "data": { // 自定义业务数据,可选 "order_id": "12345" }, "apns": { "payload": { "aps": { "alert": { "title": "服务器通知标题", "body": "服务器通知内容" }, "sound": "default", "badge": 1 } }, "headers": { "apns-priority": "5" // 前台通知用优先级5,后台推送用10 } } }
重点注意:
- 必须包含
notification节点,或者在apns.payload.aps里配置alert字段(二选一即可,推荐前者,FCM会自动适配多平台)。 - 如果只发送
data字段,系统不会触发willPresentNotification,需要你在didReceiveRemoteNotification里手动创建并展示通知。
3. 确保willPresentNotification实现完整
虽然你说控制台发送时这个方法会被调用,但还是确认下实现是否正确,特别是要调用completionHandler并传入展示选项:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { // 打印通知内容方便调试 NSDictionary *userInfo = notification.request.content.userInfo; if (userInfo[kGCMMessageIDKey]) { NSLog(@"服务器通知ID: %@", userInfo[kGCMMessageIDKey]); } NSLog(@"服务器通知内容: %@", userInfo); // 告诉系统要展示通知的哪些部分(弹窗、声音、角标) completionHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionBadge); }
4. 额外检查点
- 确认你的APNS证书已经正确上传到Firebase控制台,并且和APP的bundle ID完全匹配。
- 确认用户已经授权了通知权限(你的代码里已经做了请求授权,这部分没问题)。
- 如果服务器用的是FCM的HTTP v1 API,确保请求的权限和配置正确,没有遗漏必要的字段。
按照上面的步骤调整后,服务器发送的通知应该就能在APP前台触发willPresentNotification并正常展示了。
内容的提问来源于stack exchange,提问作者UseriOSDev
相关产品推荐
相关产品推荐

