Gro*_*uez 7 android push-notification firebase google-cloud-messaging firebase-cloud-messaging
Google Cloud Messaging (GCM) 支持两种类型的推送消息:“通知”消息和“数据”消息。根据文档,通知消息默认是可折叠的,而数据消息默认是不可折叠的。
为了使数据消息可折叠,您需要指定一个collapseKey. 我的问题是:如何使通知消息不可折叠?
注意:该问题也适用于 Firebase Cloud Messaging (FCM)。
消息概念和选项文档指出:
默认情况下,消息是不可折叠的,但通知消息除外,通知消息始终是可折叠的
但后来在同一页上,它接着说:
除通知消息外,所有消息默认都是不可折叠的
这有点模棱两可。然而,在有效负载部分,它指出:
[通知消息]可以具有可选的数据有效负载。始终可折叠
因此,似乎不可能使通知消息不可折叠。
我建议这是设计使然,因为在 Android 中创建通知时,当发布具有相同 ID 的另一个通知时,它们会自动替换(类似于折叠消息的工作原理)。如果我没记错的话,FCM/GCM 对所有通知消息使用相同的 ID。
如果您确实想要不可折叠的通知消息,我建议发送仅数据有效负载(没有通知 或collapseKey),然后覆盖onMessageReceived()来FirebaseMessagingService创建您自己的通知。
Android 快速入门示例中有一个这样的示例:
Run Code Online (Sandbox Code Playgroud)@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()方法。
对于您的场景,您需要向调用传递一个唯一的 ID,notificationManager.notify()以便 Android 创建新通知并且不会替换任何现有通知 - 因此,使消息不可折叠。
| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |