同一Bundle ID的iOS应用能否对接双Firebase项目?FCM Token异常求助
同一Bundle ID的iOS应用对接多Firebase项目的FCM Token问题及合规性咨询
问题背景
我们有一款iOS应用(同一Bundle ID),会根据设备地区选择对接北美(NAM)或欧洲(EU)的Firebase项目。11月15日前功能一切正常,但发布新版本后,对接EU项目时启动应用无法收到FCM注册Token。我们已正确设置Messaging.messaging().delegate = self,期望触发func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?)代理方法获取Token。
测试现象
- 基于Firebase Messaging Quickstart项目测试:同一Bundle ID下,对接NAM项目能正常收到Token,对接EU项目则无法获取;使用不同Bundle ID时,两个项目均能正常获取Token。
- 2024-12-10更新:iPad Pro M1设备无此异常,但常规iPad或iPhone 13 Pro存在该问题。
核心咨询
今后是否允许同一Bundle ID的应用对接两个不同的Firebase项目?
回答
Firebase官方并不支持同一Bundle ID(iOS)或包名(Android)同时关联多个Firebase项目。虽然此前可能存在可临时切换的情况,但这并非官方认可的使用方式,后续版本的Firebase SDK可能会严格限制这种跨项目的关联行为,这也是你在新版本SDK中遇到EU项目无法获取FCM Token的原因。
从技术实现角度,FCM的Token生成与项目关联的APNs密钥、Bundle ID绑定关系紧密,同一Bundle ID在Firebase系统中只能与一个项目的APNs配置关联,跨项目切换时会出现身份验证或配置冲突,导致Token无法正常生成,这也是不同设备出现差异的可能原因(部分设备的缓存或系统特性暂时兼容了这种非标准操作)。
如果需要按地区对接不同Firebase项目,建议的合规方案是:
- 使用不同的Bundle ID区分不同地区版本的应用;
- 或在单个Firebase项目内通过自定义逻辑实现地区化的消息推送策略,而非切换整个Firebase项目。
内容的提问来源于stack exchange,提问作者Icare
相关产品推荐
相关产品推荐

