【问题标题】:How to send APNS push notifications from Dev, Test, Staging, and Prod environments?如何从 Dev、Test、Staging 和 Prod 环境发送 APNS 推送通知?
【发布时间】:2020-01-04 04:29:28
【问题描述】:

我正在使用Flutterfirebase_messaging 插件开发一个应用程序。后端通过 Firebase 云消息传递 (FCM) 发送推送通知。如何构建不同风格的应用程序,只能从相应的后端接收推送通知?

  • 开发人员(每个工程师一个)
  • 测试
  • 分期
  • 产品

Android:经过大量搜索,我得出的结论是 FCM 访问控制粒度是每个项目的。因此,这应该有效:

  1. 为每种风格创建一个 Firebase 项目。
  2. 向每个 Firebase 项目添加一个具有唯一包名称 com.company.app.flavor 的“Android 应用”。
  3. Configure build.gradle 具有风格和适当的 applicationIdSuffix 值,因此应用二进制文件最终具有与 Firebase 项目“Android App”条目相同的包名称。

iOS:如何使用 APNS 为 iOS 完成同样的事情?

  • 我发现一个 answer from 7 years ago 现在没有意义了。
  • 我能否在 iOS 上遵循与 Android 相同的策略,为每种风格构建具有唯一 Bundle-ID 的应用程序?这是否需要在 App Store Connect 中为每个 Bundle-ID 输入一个应用程序?
  • an article on iOS flavors,但它缺少一些信息,并且没有提及设置 bundle-id 或 bundle-id-suffix。

【问题讨论】:

  • 我遇到了一个关于口味和 iOS 证书的问题,导致我在不同的数据库中注册了相同的包 ID。我关注了您偶然发现的文章,但我不得不牺牲 bundle-id-suffix,但除此之外它工作得很好。
  • 您能否解释一下“我在不同的数据库中注册了相同的捆绑包 ID”是什么意思?什么数据库?你能解释一下“我不得不牺牲 bundle-id-suffix”是什么意思吗?
  • 我没有每个 Firestore 数据库的唯一捆绑 ID。我在每一个中都注册了相同的捆绑包 ID。当我编译应用程序时,构建脚本会根据我选择的风格包含请求的数据库。关于 bundle-id-suffix 的牺牲,我简单地省略了后缀,因为我无法让 xCode 接受不同的 bundle id,导致我的 iPhone 上不能有多个版本,但该版本已使用匹配的数据库正确设置.
  • 感谢您的解释。我的问题是关于 Firebase 云消息传递和 APNS。我没有使用 Firestore 数据库。
  • 我使用了 FCM 插件和 Firebase,我的错误。

标签: ios flutter firebase-cloud-messaging apple-push-notifications


【解决方案1】:

我找到、实施并测试了解决方案:使用单独的捆绑包 ID,就像使用 Android 一样。例如:com.company.appname.dev 和 com.company.appname.prod`。

博文Flavoring Flutter by Salvatore Giordano 解释了如何为每种风格设置 XCode 方案。即使您不使用 Flutter,这篇文章也很有用。

这是我的测试步骤:

  1. 已创建 Firebase 项目:appname-dev
    • 安卓应用:com.company.app.dev
    • iOS 应用程序:com.company.app.dev
    • APNS 密钥:
  2. 创建了另一个 Firebase 项目:appname-prod
    • 安卓应用:com.company.app.prod
    • iOS 应用程序:com.company.app.prod
    • APNS 密钥:
  3. 使用捆绑包 ID com.company.app.dev 和显示“dev”的图标创建了 iOS 应用的开发风格。
  4. 使用捆绑包 ID com.company.app.prod 和显示“prod”的图标创建了 iOS 应用的 prod 风格。
  5. 在我的手机上安装了这两种风格的应用程序。启动它们并确保每个都初始化 Firebase 云消息传递代码并请求显示通知的权限。
  6. 使用 Firebase 控制台向两个应用发送测试消息。
  7. 从我的手机中删除了开发应用程序。
  8. 使用 Firebase 控制台向两个应用发送测试消息。确认只有 prod 应用程序的消息出现在手机的锁定屏幕中。开发应用程序的消息没有出现。这证实了 APNS 正确分离了应用的开发和产品风格。

【讨论】:

    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 2012-02-22
    • 2015-12-29
    • 2011-06-07
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多