ios - 如何调试 iOS 不接收推送通知(使用 firebase_messaging 的颤振)?
问题描述
目前,我正在使用flutter firebase_messaging 库来推送iOS 和Android 的通知。
我在通过 Firebase 控制台(通过指定 apnsToken 进行通知测试)或通过使用旧 HTTP 协议的 curl 请求(仅通知,不发送 iOS 或 Android 有效负载)发送的 iOS 上接收通知时遇到问题。在 Android 上,这两种方法都可以正常工作并收到通知。
我已按照文档中的所有指定步骤进行操作,但均未成功:
- 启用推送通知和后台模式(后台获取和远程通知)
- 注册一个密钥并将 .r8 导出到 Firebase 控制台 APN 身份验证密钥。
- 注册一个 APP ID(启用推送通知)。
- 生成了一个配置文件。
- 在颤振端等待 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 上收到通知)。
我忘记了什么步骤?我该如何调试呢?
解决方案
根据我的经验,通常调试这个非常困难。我有一个类似的问题,我发现这是由于我犯了两个错误。虽然您可能已经解决了您的问题,但我将在此处发布此内容,以便其他人可以从中受益。
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();
检索它。
推荐阅读
- c# - LightInject 和自动属性实例化
- python - Pyspark:使用 toLocalIterator 重置连接
- git - 重命名所有文件后的git合并
- yaml - 如何在 Liquid/Jekyll 中将包含引号的字符串作为“include”参数传递?
- tableau-api - Tableau - 上个月 12 的总和值
- postgresql - Postgres:单独路径中的 PostGIS 扩展
- mysql - 如何使用while循环将文本文件从bash导入mysql表
- visual-studio - 在 VS2015 VC++ Redistributables 中找不到多字节字符集
- ajax - Flask:请求方法不通过 AJAX 从 Web 表单中获取日期时间值
- android - Android布局成反应原生视图