android是否有检查推送通知的时间周期?

Does android have a time cycle for checking push notifications?

我正在调查为什么我的应用程序有时会延迟接收推送通知以及导致这种情况的原因,我一直在三个不同的设备上使用我的应用程序(使用 xamarin 构建)进行一些测试 android 7 、9 和 10,使用 FCM 发送通知。

我注意到这些行为:

我的结论是 android 似乎有时间周期来检查通知。当您关闭屏幕时,设备似乎会在几分钟后进入 "stand by" 模式。如果您在此期间发送通知,您会立即收到通知,因为 android 尚未激活。但是,如果您在设备处于此 "stand by" 模式时发送通知,它只会在下一个周期显示通知,这可能会导致延迟。

确认一下可以吗?

此外,我还想说在 firebase 端和应用程序端将通知 importance/priority 配置为高,并没有改变这种行为。这可能与 FCM 服务相关,还是真正的 android 行为?

很抱歉问了这么长的问题,这让我困扰了好几天。

正如我们在 Android's Doze Mode 中看到的那样,我的问题中描述的行为正是 android 所做的!但是我们可以通过使用高优先级通知来解决这个问题,在我的例子中,我通过将这些参数添加到 FCM SDK 来修复它:

'android'=>['priority'=>'high'],
'apns'=>['headers'=>['apns-priority'=>'10']],
'webpush'=>['headers'=>['Urgency'=>'high']]

您可以在 FCM Cloud Message docs

阅读更多相关信息