iOS端FCM推送通知无法接收问题求助
iOS FCM推送无响应排查与修复方案
核心问题分析
从你的代码和日志来看,FCM Token已成功获取,但设备未收到推送且无接收日志,说明APNs到设备的推送链路存在断点,大概率是注册流程不完整或配置遗漏导致。
代码层面修复
1. 补全远程通知注册回调
你的AppDelegate缺少didRegisterForRemoteNotificationsWithDeviceToken方法,即使Firebase启用了方法混写(Swizzling),也可能因时机或配置问题失效,手动实现该方法确保APNs Token正确传递给FCM:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken let tokenString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() print("APNs设备Token: \(tokenString)") }
2. 调整初始化顺序
将Firebase配置移至最前,确保FCM服务初始化完成后再处理通知权限与注册:
func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { assert(Thread.isMainThread) print("Preparing to configure Firebase") // 优先初始化Firebase FirebaseApp.configure() Messaging.messaging().delegate = self // 配置通知中心 UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { granted, error in if let error = error { print("通知权限请求失败: \(error.localizedDescription)") } // 仅在权限获取后触发远程通知注册 if granted { DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications() } } } UIApplication.shared.applicationIconBadgeNumber = 0 return true }
配置与环境排查
- 确认Background Modes配置:在Capabilities中,确保
Background Modes下的Remote notifications子选项已勾选(你的截图中Background Modes已开启,需确认该子选项状态)。 - 验证APNs证书有效性:
- 重新生成APNs证书(区分开发/生产环境),确保Bundle ID与项目完全一致。
- 在Firebase控制台重新上传证书,确认证书状态为"有效"。
- 检查推送环境匹配:
- Debug包对应Firebase控制台的"开发环境"推送,Release包对应"生产环境"。
- 使用FCM Token测试推送时,确保Token来自当前测试设备的运行实例。
- 设备通知设置:进入设备
设置 > 你的App > 通知,确认"允许通知"已开启,且通知样式(横幅/提醒)已配置。 - 日志补充排查:在Xcode中添加
-FIRMessagingDebugEnabled启动参数,查看FCM更详细的调试日志,确认是否有APNs Token传递失败或推送接收的报错信息。
测试验证
修改代码后,重新运行App:
- 确认控制台打印出
APNs设备Token,说明远程通知注册成功。 - 使用Firebase控制台发送测试推送,选择"测试设备"并填入当前设备的FCM Token。
- 查看控制台是否打印
Will present或Did receive日志,同时检查设备是否收到通知提示。
内容的提问来源于stack exchange,提问作者NoKey
相关产品推荐
相关产品推荐

