Xamarin iOS换品牌重发后推送通知无法接收问题咨询
Xamarin 跨平台推送通知故障排查方案
通用基础检查
- 确认新的Bundle ID(iOS)/包名(Android)与Firebase控制台配置的ID完全一致,大小写、特殊字符都不能出错,Firebase对ID匹配要求严格。
- 验证
google-services.plist(iOS)和google-services.json(Android)是从新Firebase项目下载的最新文件,且已正确添加到项目根目录:iOS需设置Build Action为BundleResource,Android需设置Build Action为GoogleServicesJson。 - 检查新应用的推送权限配置:iOS要在
Info.plist中添加NSRemoteNotificationUsageDescription和UIUserNotificationSettings相关项;Android需在AndroidManifest.xml中声明POST_NOTIFICATIONS权限(Android 13+),以及Firebase推送所需的广播接收器、服务配置。
iOS 专项排查
- 确认新的APNs证书已在Apple开发者后台生成,且上传到Firebase控制台的Cloud Messaging设置中,证书类型(开发/生产)要和当前应用构建环境匹配。
- 检查Xamarin项目的
Entitlements.plist,确保Push Notifications权限已开启,且App ID关联的是新Bundle ID对应的配置。 - 测试推送时,必须使用新Firebase项目生成的服务器密钥,推送目标token是新应用获取的设备token,不能混用旧项目的密钥或token。
- 查看Xcode控制台日志,过滤
APNs或FirebaseMessaging关键词,排查是否有token获取失败、证书验证错误的日志信息。
Android 专项排查
- 确认新应用的
google-services.json中的package_name和项目AndroidManifest.xml里的package属性完全一致。 - 检查
AndroidManifest.xml中是否正确注册Firebase推送服务:<service android:name="com.google.firebase.messaging.FirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name="com.google.firebase.components.ComponentDiscoveryService"> <meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar" /> </service> - 在
FirebaseMessaging.Instance.TokenReceived事件中打印token,验证设备是否成功获取有效token,且该token属于新Firebase项目。 - 检查Android系统通知权限,Android 13及以上版本需手动授予应用通知权限,否则推送无法显示。
推送测试建议
- 使用Firebase控制台的Cloud Messaging测试功能,直接向新应用的设备token发送测试推送,观察接收情况,同时查看控制台的推送状态报告,排查送达失败原因。
- 确认推送消息payload格式符合要求:iOS需包含
aps字段,Android需确保notification或data字段格式正确。
内容的提问来源于stack exchange,提问作者Vice95
相关产品推荐
相关产品推荐

