谷歌云消息传递(GCM)支持两种类型的推送消息:“通知”消息和“数据”消息。根据文档,通知消息默认是可折叠的,而数据消息默认是不可折叠的。
为了使数据消息可折叠,您需要指定一个
注意:这个问题同样适用于Firebase云消息传递(FCM)。
为了使数据消息可折叠,您需要指定一个
collapseKey
。我的问题是:如何使通知消息不可折叠?注意:这个问题同样适用于Firebase云消息传递(FCM)。
collapseKey
。我的问题是:如何使通知消息不可折叠?但在同一页的后面,它又说:默认情况下,除了通知消息以外的所有消息都是不可折叠的,通知消息则始终可折叠。
这有些模糊不清。然而,在有效负载部分,它指出:除了通知消息以外,默认情况下所有消息都是不可折叠的。
因此,似乎不可能使通知消息不可折叠。【通知消息】可能有可选数据有效负载。始终可折叠
collapseKey
),然后覆盖FirebaseMessagingService
中的onMessageReceived()
以创建自己的通知。
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// ...
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
// ...
}
// ...
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
最后一个评论指向了这个示例sendNotification()
方法。notificationManager.notify()
调用,以便Android创建新通知并不替换任何现有通知 - 因此使消息不可折叠。notification
负载的印象更多的是一个简单的辅助服务,用于快速轻松地发送通知,而不是首选方法。使用 FCM 的首选/高级方式是只发送 data
-only 负载,在接收到消息后执行一些逻辑,如果需要则创建自己的通知。我敢打赌,我的回答中第3个引号是决定性的:notification
消息总是可以折叠的。 - Grimthorr首先,这里是FCM文档的参考:
一个不可折叠的消息表示每个单独的消息都会传递到设备。与一个无内容的“ping”通知应用程序联系服务器以获取数据的可折叠消息不同,一个不可折叠的消息提供了一些有用的内容。
根据您的问题--"如何使通知消息不可折叠?"--你是否为发送的每个notification
消息指定了不同的collapse_key
?
一个可折叠的消息的作用就像每个消息都有相同的collapse_key
一样。但是,如果您为每条消息指定一个不同的collapse_key
,那么它就不能替换上一条消息。这将使notification
消息的行为类似于不可折叠的消息。