繁体   English   中英

如何调试 iOS 未收到推送通知(使用 firebase_messaging 的 Flutter)?

[英]How to debug iOS not receiving push notifications (Flutter using firebase_messaging)?

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

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

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

  • 启用推送通知和后台模式(后台获取和远程通知)
  • 注册一个密钥并将 .r8 导出到 firebase 控制台 APN Auth 密钥。
  • 注册一个 APP ID(启用推送通知)。
  • 生成了一个供应配置文件。
  • 等待颤振侧的 Firebase 初始化。
  • 在 iOS 上请求通知权限

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

我没有弄乱 FirebaseAppDelegateProxyEnabled,甚至认为我收到以下消息:FIRMessaging 远程通知代理已启用,将调整远程通知接收器处理程序。

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

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

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

1. 请求权限

在 iOS 上,您需要请求发送通知的权限,否则它们将永远不会到达。 查看特定命令的文档 就我而言,它的工作原理是

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();

取回它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM