当设备离线并使用 Firebase 再次连接时,某些通知会丢失

问题描述 投票:0回答:2

我正在使用 Firebase 云消息传递 v1 (https://fcm.googleapis.com/fcm/send)

我已经在我的 Android 设备中成功实现了通知,并且我已经收到了推送通知。

问题是,当我的设备一段时间没有连接到互联网并再次连接时,除了最后一个之外,我的所有推送通知都会丢失。 (我尝试发送 5 个标题和正文不同的通知,但只收到最后一个,之前的 4 个通知都消失了)。

我已经在 设备离线时接收所有推送通知

上发现了同样的问题

但是看了答案后,我的 Android 上的实际情况似乎并不像预期的答案:“建立连接时,GCM 将所有待处理消息传递到设备。”

既然已经是 4 年前的事了,到 2022 年可能就不再相关了。

我尝试了一些设置,包括设置不同的值collapse_keytopictagttl高优先级,但它根本没有解决问题。 因此,有人找到了这方面的解决方案吗?我们可以只关注 Android 设备(我们根本不使用 iOS 设备)

这是我使用的android清单

   <meta-data
       android:name="com.google.firebase.messaging.default_notification_channel_id"
       android:value="default_channel" />
   <meta-data
       android:name="com.google.firebase.messaging.default_notification_icon"
       android:resource="@drawable/ic_notif" />
   <meta-data
       android:name="com.google.firebase.messaging.default_notification_color"
       android:resource="@color/red" />
android firebase push-notification firebase-cloud-messaging
2个回答
1
投票

如果您使用通知有效负载,则这将按预期工作。 通知消息始终是可折叠的这就是为什么只收到最后一条通知的原因。您可以尝试使用数据有效负载,因为它默认情况下是不可折叠的。


0
投票

实际上,这取决于您如何设置通知。如果它包含数据消息,您应该从请求中删除通知参数。

如果通知内容包含“通知”参数,将被系统处理并折叠。

{
    "registration_ids": [
        "...device push token..."
    ],
    "priority": "high",
    "notification": {
        "title": "Notification Title",
        "body": "Notification Body."
    },
    "data": {
        ....
    }
}

如果您如下所示更改请求,您将在设备上线时收到所有消息。您可以在 FirebaseMessagingService 中的 onMessageReceived() 方法中处理推送通知。

{
    "registration_ids": [
        "...device push token..."
    ],
    "priority": "high",
    "data": {
        ....
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.