【问题标题】:How to debug iOS not receiving push notifications (Flutter using firebase_messaging)?如何调试 iOS 不接收推送通知(使用 firebase_messaging 的颤振)?
【发布时间】:2021-11-26 19:51:53
【问题描述】:

目前,我正在使用 Flutter firebase_messaging 库来推送 iOS 和 Android 的通知。

我在 iOS 上接收由 firebase 控制台发送的通知(通过指定 apnsToken 进行通知测试)或使用旧 HTTP 协议的 curl 请求(仅通知,不发送 iOS 或 Android 有效负载)时遇到问题。 在 Android 上,这两种方法都可以正常工作并收到通知。

我已按照文档中的所有指定步骤操作,但没有成功:

  • 启用推送通知和后台模式(后台获取和远程通知)
  • 注册密钥并将 .r8 导出到 Firebase 控制台 APN 身份验证密钥。
  • 注册一个APP ID(启用推送通知)。
  • 已生成配置文件。
  • 等待 Flutter 端的 Firebase 初始化。
  • 在 iOS 上请求通知权限

更多信息: 我可以在 iOS 和 Android 上获取 APNs ID,所以我猜问题不在于 firebase(核心)配置,而可能在于 firebase 消息传递。但是,iOS APN(仅大写锁定字符和数字)似乎与 Android APN 确实不同。正常吗?

我没有弄乱 FirebaseAppDelegateProxyEnabled,即使我收到以下消息:FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers.

我知道 curl 请求返回 200 OK(响应代码并且我在 Android 上收到通知)。

我忘记了什么步骤?我该如何调试?

【问题讨论】:

    标签: ios firebase flutter push-notification firebase-cloud-messaging


    【解决方案1】:

    根据我的经验,一般来说调试这个是相当困难的。我有一个类似的问题,我发现这是由于我犯了两个错误。虽然您可能已经解决了您的问题,但我会在此处发布此内容,以便其他人可以从中受益。

    1。请求权限

    在 iOS 上,您需要请求权限才能发送通知,否则它们永远不会到达。具体命令看the documentation。就我而言,它的工作原理是

    FirebaseMessaging.instance.requestPermission(
      alert: true,
      announcement: false,
      badge: true,
      carPlay: false,
      criticalAlert: false,
      provisional: false,
      sound: true,
    );
    

    2。使用普通令牌,而不是 APNs 令牌

    这应该很明显,但不知何故我设法认为如果Platform.isIOS,我需要使用 APNs 令牌。这当然不是真的,你应该总是使用

    String? token = await FirebaseMessaging.instance.getToken();
    

    检索它。

    【讨论】:

      猜你喜欢
      • 2019-05-31
      • 2021-12-28
      • 1970-01-01
      • 2021-07-24
      • 2020-06-26
      • 2020-06-28
      • 2021-09-14
      • 2021-07-14
      • 2021-11-04
      相关资源
      最近更新 更多