读取超时的 Firebase 消息注销通知失败
Posted
技术标签:
【中文标题】读取超时的 Firebase 消息注销通知失败【英文标题】:Firebase Messaging unregister notification for read_timeout failed 【发布时间】:2021-09-16 21:47:52 【问题描述】:我试图从一台设备向另一台设备发送通知,让用户知道有一条消息等待他。
当我试图捕捉和处理 RemoteMessage 时,这是控制台打印的内容。它发生在 ios 物理设备上。
该功能以前可以完美运行,但现在无法通过设备客户端向其他用户发送通知。
功能概览:
static Future<void> sendNotificationToOtherUser(
String title, String body, String token) async
final headers =
'content-type': 'application/json',
'Authorization':
'key=I hide KEY but I assure you there is nothing wrong with key'
;
List<String> list = List();
// token is not null
list.add(token);
final postUrl = 'https://fcm.googleapis.com/fcm/send';
final data =
"registration_ids": list,
"notification":
"title": '$title',
"body": '$body',
,
;
final response = await http.post(Uri.parse(postUrl),
body: json.encode(data),
encoding: Encoding.getByName('utf-8'),
headers: headers);
if (response.statusCode == 200)
// it prints 200 so works perfectly
print(response.body);
print('test ok push CFM');
return true;
else
print(response.body);
print(' CFM error');
// on failure do sth
return false;
似乎一切正常,但由于我在下面放置的错误,其他设备无法捕获通知并显示它。 错误:
[connection] nw_endpoint_handler_set_adaptive_read_handler [C6.1 216.58.212.42:443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
[connection] nw_endpoint_handler_set_adaptive_write_handler [C6.1 216.58.212.42:443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
图书馆:
firebase_core: ^1.0.3
firebase_auth: ^1.0.2
cloud_firestore: ^1.0.4
firebase_storage: ^8.0.1
firebase_messaging: ^10.0.0
Flutter SDK 版本:
[✓] Flutter (Channel stable, 2.2.2, on macOS 11.4 20F71 darwin-x64, locale
en-GB)
• Flutter version 2.2.2 at /Users/user/development/flutter
• Framework revision d79295af24 (4 weeks ago), 2021-06-11 08:56:01 -0700
• Engine revision 91c9fc8fe0
• Dart version 2.13.3
【问题讨论】:
发现问题了。我需要在 Firestore 中刷新 FCM 令牌才能收到通知,因为该令牌不再有效。 您是否至少收到了推送通知?我有同样的问题,但我正在接收推送通知并且它们正在显示,但我无法访问 onMessage 侦听器甚至后台侦听器上的 RemoteMessage。我一直在寻找解决方案,非常感谢您对此的回应。 您是否尝试强制刷新 FCM 令牌?我通过这样做解决了它。 @马兹 是的,我们发现了问题,我使用的是 getAPNSToken 而不是 getToken。我们正在使用 Django 及其包来发送通知。我不知道这有什么关系,但这就是解决方法。感谢您的回复! 【参考方案1】:如果您想隐藏这些错误,请执行以下操作:
-
从 Xcode 菜单打开:产品 > 方案 > 编辑方案
左侧项目“运行”->选项卡“参数”
添加环境变量:
OS_ACTIVITY_MODE = 禁用
https://developer.apple.com/forums/thread/681040
【讨论】:
这不是解决方案。所有这一切都是关闭所有调试日志记录,包括有用的东西。以上是关于读取超时的 Firebase 消息注销通知失败的主要内容,如果未能解决你的问题,请参考以下文章
用户注销 React Native 应用程序时如何删除 Firebase 云消息传递令牌?