2

我正在尝试为 Android 和 iOS 构建一个 Flutter 应用程序。我一直在使用 Firestore Cloud Messaging (FCM) 实现推送通知,当我在模拟器 (Android) 或连接的物理设备 (iOS) 上进行测试时,它适用于 Android 和 iOS。

但是,当我构建应用程序供客户端测试(使用 Codemagic)时,推送通知在 iOS 上不起作用(在 Android 上起作用)。如果它适用于我的开发环境但不适用于 Codemagic,这意味着除了 Codemagic 的构建之外,一切都已正确配置,对吧?

这就是我配置它的方式

我认为除了连接苹果开发者账户外,Codemagic 上不需要做额外的配置。但是,如果我在连接帐户时犯了错误,那么我想在我构建应用程序时团队就不会出现。

此外,当我尝试使用 iphone 生成的 FCM 令牌通过 Postman 发送推送通知时,它返回“ NotRegistered ”。

那么我做错了什么?

请,任何帮助将不胜感激。

谢谢。

4

4 回答 4

2

我会尝试检查 Codemagic 在构建期间使用的配置文件。如果您已经尝试在 Codemagic 上使用自动代码签名,并且稍后添加了 FCM,那么您可能必须删除 Codemagic 已经创建的配置文件,以强制 Codemagic 创建一个启用推送通知的新配置文件(一旦在xcode 功能)。在任何情况下,您都可以在 Apple Developer Portal 上检查生成的配置文件,并检查是否为生成的配置文件启用了推送通知。

于 2021-02-08T10:11:58.883 回答
0

对于 iOS,应用程序标识符需要生产和开发证书。如果它只有开发证书,它只会在开发中工作。您是在为客户提供分发版本还是开发版本?

于 2021-02-07T12:53:51.290 回答
0

万一有人遇到同样的问题。我通过不使用 Codemagic 进行 iOS 部署解决了这个问题。我改为遵循本指南:https : //flutter.dev/docs/deployment/ios 并在 Apple 的 TestFlight 上部署了 iOS 版本。

从那里安装应用程序后,推送通知在 iOS 上运行良好。

于 2021-02-07T22:21:11.630 回答
0

我有点晚了,但也许有人仍然面临这个问题并寻找解决方案。在我想发送到我的 IOS 设备的每条消息上,我也得到了 NotRegistered。我的问题是,我创建的 FCM IOS 密钥是沙盒密钥。APNS 使用两台服务器进行推送通知——沙盒和生产。当您在开发期间在 iOS 设备上构建应用程序的调试版本时,它会连接到沙盒服务器并从中检索令牌。创建应用程序的发布版本后,它将连接到生产服务器。如果您正在使用调试版本测试应用程序,那么要测试通知,您需要确保通过沙箱对其进行测试。收到令牌后,您可以使用以下 Google API 将 APNS 令牌转换为 FCM 令牌:

HTTP POST : https://iid.googleapis.com/iid/v1:batchImport HTTP HEADERS: Content-Type: application/json Authorization : key=YOUR_SERVER_KEY

身体 : { "application": "com.company.app", (YOUR_APP_PACKAGE) "sandbox":true, "apns_tokens":["7c6811bfa1e89c739c5862122aa7ab68fc4972dea7372242f74276a5326f...."] }

于 2021-11-03T08:07:09.750 回答