gpt4 book ai didi

Android:在 FCM 中延迟接收消息(onMessageReceived)

转载 作者:可可西里 更新时间:2023-11-01 18:47:00 40 4
gpt4 key购买 nike

在测试应用程序中,我已经实现了使用 FCM 发送通知消息

https://github.com/firebase/quickstart-android/tree/master/messaging

为了测试,我使用通知下的“新消息”从 firebase 控制台发送消息(8:42 PM)。

Sent at 8:42 PM

但是在我的模拟器中,我在 9:06 PM

收到了消息

received at 9:06 PM

如果有什么可以减少延迟,请告诉我。

谢谢。

最佳答案

这可能是由 Firebase 云消息传递中的不切实际的心跳间隔引起的。

FCM 的工作原理是维护从 Android 设备到 Google 服务器的空闲套接字连接。这很棒,因为它几乎不消耗电池电量(与轮询相反),并且它允许设备在消息到达时立即被唤醒。

为确保连接保持 Activity 状态,Android 将在移动连接上每 28 分钟发送一次心跳,在 WiFi 上每 15 分钟发送一次心跳。如果心跳失败,则连接已终止,FCM 将重新建立它并尝试检索任何待处理的推送通知。心跳间隔越长,电池消耗越少,设备从 sleep 中唤醒的次数就越少。

然而,这是有代价的:心跳间隔越长,识别断开的套接字连接所需的时间就越长。在部署 FCM 之前,谷歌没有在现实生活中对这些间隔进行足够彻底的测试。这些间隔的问题是由网络路由器和移动运营商引起的,它们会在几分钟不活动后断开空闲套接字连接。

更多信息可以在我的博客上找到:

http://eladnava.com/google-cloud-messaging-extremely-unreliable/

作为解决方法,请考虑 Pushy ( https://pushy.me ),它是 GCM/FCM 的直接替代品,可大大提高通知速度和可靠性(完全披露 - 我创立了 Pushy)。

关于Android:在 FCM 中延迟接收消息(onMessageReceived),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725622/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com