我正在开发一个带有Flutter和firebase_messaging插件的应用程序。 后端通过 Firebase 云消息 (FCM( 发送推送通知。 如何构建不同风格的应用程序,这些应用程序只能从其相应的后端接收推送通知?
- 开发人员(每个工程师一个(
- 测试
- 分期
- 刺
Android:经过大量搜索,我得出的结论是,FCM访问控制粒度是每个项目的。 因此,这应该有效:
- 为每种风格创建一个 Firebase 项目。
- 将一个具有唯一软件包名称的"Android 应用"添加到每个 Firebase 项目
com.company.app.flavor
。 - 使用 build.gradle 配置特定规格和适当的
applicationIdSuffix
值,以便应用二进制文件最终具有与 Firebase 项目"Android 应用"条目相同的包名称。
iOS:如何使用APNS为iOS完成同样的事情?
- 我找到了 7 年前的答案,现在没有意义了。
- 我是否可以在 iOS 上遵循与 Android 相同的策略,为每种口味构建具有唯一捆绑 ID 的应用程序? 这是否需要在App Store Connect中为每个捆绑ID输入应用程序?
- 有一篇关于iOS风格的文章,但它缺少一些信息,也没有提到设置捆绑ID或捆绑ID后缀。
我发现、实现并测试了解决方案:使用单独的捆绑 ID,就像使用 Android 一样。 例如:com.company.appname.dev
和 com.company.appname.prod'。
Salvatore Giordano的博客文章Flavoring Flutter解释了如何为每种口味设置XCode方案。 即使您不使用 Flutter,这篇文章也很有用。
以下是我的测试步骤:
- 创建 Firebase 项目:
appname-dev
- 安卓应用:
com.company.app.dev
- iOS 应用程序:
com.company.app.dev
- APNS 密钥:<团队密钥>团队密钥>
- 安卓应用:
- 创建了另一个 Firebase 项目:
appname-prod
- 安卓应用:
com.company.app.prod
- 苹果应用:
com.company.app.prod
- APNS 密钥:<同一团队密钥>同一团队密钥>
- 安卓应用:
- 创建了 iOS 应用程序的开发风格,使用捆绑 ID
com.company.app.dev
和显示"dev"的图标。 - 创建了 iOS 应用的 prod 风格,使用捆绑 ID
com.company.app.prod
和显示"prod"的图标。 - 在我的手机上安装了该应用程序的两种版本。 启动它们并确保每个都初始化了 Firebase 云消息代码并请求显示通知的权限。
- 使用 Firebase 控制台向这两个应用发送测试消息。
- 从我的手机中删除了开发应用程序。
- 使用 Firebase 控制台向这两个应用发送测试消息。 已确认手机的锁定屏幕中仅显示生产应用的消息。 未显示开发人员应用的消息。 这确认了 APNS 正确分离了应用的开发和生产风格。