gpt4 book ai didi

android - 如何使 GCM/FCM 通知类型消息不可折叠

转载 作者:行者123 更新时间:2023-11-29 02:29:38 25 4
gpt4 key购买 nike

Google Cloud Messaging (GCM) 支持两种类型的推送消息:“通知”消息和“数据”消息。根据the documentation ,通知消息默认是可折叠的,而数据消息默认是不可折叠的。

为了使数据消息可折叠,您需要指定一个collapseKey。我的问题是:如何使通知消息不可折叠?

注意:该问题也适用于 Firebase 云消息传递 (FCM)。

最佳答案

message concepts and options documentation状态:

messages are non-collapsible by default except for notification messages, which are always collapsible

但后来在同一页上,它继续说:

except for notification messages, all messages are non-collapsible by default

这有点模棱两可。然而,在 payload section ,它指出:

[notification messages] may have optional data payload. Always collapsible

因此,似乎不可能使通知消息不可折叠。

我建议这是设计使然,因为在 Android 中创建通知时,它们是 automatically replaced when another notification with the same ID is posted (类似于折叠消息的工作方式)。如果我没记错的话,FCM/GCM 对所有通知消息使用相同的 ID。

可能的解决方案

如果您确实想要一个不可折叠的通知消息,我建议发送一个纯数据负载(没有通知或 collapseKey),然后覆盖 onMessageReceived() from the FirebaseMessagingService创建您自己的通知。

Android quickstart sample 上有一个例子:

@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() method .

对于您的场景,您需要将唯一 ID 传递给 notificationManager.notify()调用以便 Android 创建新通知并且不会替换任何现有通知 - 因此,使消息不可折叠。

关于android - 如何使 GCM/FCM 通知类型消息不可折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288118/

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