如何从Dev,Test,Staging和Prod环境发送APNS推送通知?

时间:2019-08-31 02:58:53

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

我正在使用Flutterfirebase_messaging插件开发应用程序。后端通过Firebase Cloud Messaging(FCM)发送推送通知。我该如何构建不同样式的应用程序,这些应用程序只能从相应的后端样式接收推送通知?

  • Dev(每个工程师一个)
  • 测试
  • 分期
  • 产品

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的应用程序吗?是否需要为每个Bundle-ID在App Store Connect中输入一个应用程序条目?
  • an article on iOS flavors,但缺少一些信息,也没有提到设置bundle-id或bundle-id-suffix。

1 个答案:

答案 0 :(得分:0)

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

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

这是我测试的步骤:

  1. 创建的Firebase项目:appname-dev
    • Android应用:com.company.app.dev
    • iOS应用:com.company.app.dev
    • APNS密钥:
  2. 创建了另一个Firebase项目:appname-prod
    • Android应用:com.company.app.prod
    • iOS应用:com.company.app.prod
    • APNS密钥:<相同的团队密钥>
  3. 使用捆绑包ID com.company.app.dev和显示“ dev”的图标创建了iOS应用程序的dev风格。
  4. 使用捆绑包ID com.company.app.prod和显示“ prod”的图标,创建了iOS应用的产品风格。
  5. 在手机上安装了这两种版本的应用程序。启动它们,并确保每个人都初始化了Firebase Cloud Messaging代码,并请求显示通知的权限。
  6. 使用Firebase控制台向两个应用程序发送测试消息。
  7. 从我的手机中删除了开发应用。
  8. 使用Firebase控制台将测试消息发送到两个应用程序。确认仅prod应用程序的消息出现在手机的锁定屏幕中。开发应用程序的消息未出现。这证实了APNS可以正确区分应用程序的开发和产品风格。