iOS 上的 Firebase 云消息传递无法正常工作

Pet*_*tík 0 push-notification apple-push-notifications ios firebase swift

我添加到我的项目Firebase Cloud Messaging以接收和发送推送通知。我按照 Google 原始教程中的步骤进行操作。结果令人兴奋,我可以在我的设备上收到推送通知- 我将其发布到TestFlight - 出现问题

我意识到我需要创建不同的证书。(???) 然后我从 Firebase Cloud 消息传递中删除了我的密钥 (.p8) 并重新创建了它(开发也是如此)+ 我重新创建了相同的开发配置文件(我撤销了旧配置文件),我从教程中重复了过程,但现在我不能即使在我的设备上能收到推送通知,无论是在 TestFlight 上。

任何人都可以帮我解决这些问题吗?

  1. 我应该创建哪个证书/配置文件?现在,我已经为开发创建了 .p8 密钥和用于开发的配置文件(不再工作)
  2. 我应该更改代码中的某些内容吗?我发现我应该在某个地方将 URL 从沙盒更改为 prod,Firebase 会自动执行吗?设备令牌有问题吗?当我将 FCM 令牌复制/粘贴到控制台时,我什至无法收到测试通知。
  3. 可以从 Firebase 消息控制台发送静默推送通知吗?(我可以在 Firebase 控制台中设置所有必需的标头吗?)
  4. .p8 和 .p12 之间的区别?可以使用 .p8 密钥进行生产吗?

请帮我解决这个问题。谢谢!

[更新][已解决]完成此答案中的步骤并将Firebase 中的团队 ID 更改为来自 Apple 开发人员的相同团队 ID 后,我能够收到我的设备和所有 TestFlight 设备的通知。

Naj*_*man 6

Firebase 与开发和生产无关。如果您使用两个不同的 firebase 应用程序,一个用于开发,另一个用于生产,那将是您的结局。如果是这种情况,您只需更改相应环境的 GoogleService-Info.plist。以下是我为正确实施 Firesbase 推送通知而应遵循的步骤。

1) 前往你的苹果开发者账号,为 APNS 创建一个新的密钥。(参考

2) 创建一个 firebase 项目并添加一个 iOS 应用程序,然后在您的应用程序设置的 Cloud Messaging 选项卡中添加您在第一步中使用 KeyID 和 TeamID 创建的密钥。

3) 将 GoogleService-Info.plist 添加到项目的根目录,并从 Xcode 的功能中添加推送通知。

4) 然后在您的应用程序中初始化 firebase (参考)

5) 添加在应用程序启动时请求通知权限的代码。

6)最后从这个方法中得到fcmToken

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

并从 firesbase 向该令牌发送通知。

注意:对于配置文件,在 Xcode 中启用自动签名,Xcode 将自行执行签名过程。现在我们不需要手动创建配置文件。

  • 您好,我删除了连接到 Firebase Cloud Messaging 的所有代码,从手机中删除了应用程序,清除了 Xcode 中的构建,删除了 Firebase Cloud Messaging 中的服务器,从 Firebase 和 Developer 中删除了旧密钥,删除了配置文件。我按照您写的所有步骤操作,成功收到 fcmToken,将其复制并粘贴到 Firebase 测试通知中 - 没有任何反应。 (3认同)