- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过 Firebase 通知控制台向用户 Android 设备发送通知,我注意到即使我在用户设备离线时发送 10 个不同的通知,一旦用户上线,她/他将收到全部 10 个通知。
但是在 Firebase 文档中指出:
FCM allows a maximum of four different collapse keys per device to be used by the app server at any given time. In other words, the FCM connection server can simultaneously store four different collapsible send-to-sync messages per device, each with a different collapse key. If you exceed this number, FCM only keeps four collapse keys, with no guarantees about which ones are kept.
FirebaseMessagingService
,我将通知处理留给了 SDK)
getIntent().getExtras()
的所有键/值对进行了测试。键设置,一旦我通过点击通知启动应用程序。事实上,我收到了
collapse_key
键与包名称的值,即使我没有指定一个。
FirebaseMessagingService
来处理通知,以便我在应用程序处于前台时从通知控制台接收消息。我收到通知消息并手动向用户显示通知。你猜怎么着。折叠键效果很好!即使我使用相同的折叠键发送多个通知,我也会收到一个通知。
但是 这显然只有在应用程序处于前台时才会发生,因为 Firebase SDK 不会调用
onMessageReceived()
当应用程序在后台时,而是它自己处理通知。这是否意味着这是 Firebase SDK 的错误? (因为该问题仅在 SDK 显示通知时发生)
最佳答案
阅读帖子和评论后,我并不完全清楚尝试过的一切,哪些努力是成功的,哪些是失败的。如果项目,我将涵盖一个数字,并希望有所帮助。
您的帖子表明,对于某些测试,您在 Firebase 控制台中编写消息时指定了折叠键。这是不可能的。如果您打开了高级选项并在自定义数据下输入了一个键/值对,那将不起作用。这些值存储在 data
下的消息中。键,不在消息的顶层collapse_key
必须出现。另外,Table 1 in the documentation包括警告 data
键不应是表中的任何保留字,特别是引用 collapse_key
:
The key should not be a reserved word ("from" or any word starting with "google" or "gcm"). Do not use any of the words defined in this table (such as collapse_key).
onMessageReceived()
被调用,我有调试日志记录使用
getCollapseKey() 在消息中输出折叠键.该输出确认 key 存在并且是我的应用程序包名称。
exports.test = functions.database.ref('/test').onWrite(event => {
const token = 'dK1FjGbNr6k:APA91bH7Vz3x...icGO56sJ7rAqOXRI';
console.log('Sending notification...');
const payload = {
notification: {
title: 'Message',
body: 'Just one please!'
}
};
const options = {
collapseKey: 'green'
};
return admin.messaging().sendToDevice(token, payload, options).then(response => {
console.log('Done');
});
});
{
"to": "dK1FjGbNr6k:APA91bH7Vz3x...O56sJ7rAqOXRI",
"collapse_key": "green",
"notification": {
"title": "Message",
"body": "Just one please!"
}
}
D/FA: Logging event (FE): notification_receive(_nr), Bundle[{firebase_event_origin(_o)=fcm, message_device_time(_ndt)=0, message_time(_nmt)=1498227476, message_id(_nmid)=6447126672094369335}]
关于firebase - FCM 通知和 collapse_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552291/
我通过 Firebase 通知控制台向用户 Android 设备发送通知,我注意到即使我在用户设备离线时发送 10 个不同的通知,一旦用户上线,她/他将收到全部 10 个通知。 但是在 Firebas
我有一个 python/django 应用程序正在向 GCM 发送推送通知,但我无法使 collapse_key 参数起作用。它为每条新消息创建一个新通知,而不是折叠它们。 python 代码如下所示
我正在我的 android 推送应用程序上实现 C2DM,这就是谷歌对 collapse_key 的评价: "一个任意字符串,用于在设备离线时折叠一组类似的消息,以便仅将最后一条消息发送到客户端。这是
Android 和 iOS 推送通知是否需要 collapse_key?如果我在 payload 中指定 collapse_key,FCM 会使用它吗?或者它会添加另一个 collapse_key?
嗨我看不到对 collapse_key 实现的任何解释。我想我明白它的作用,但不明白它是如何做到的! Android Cloud to Device Messaging Framework 我设置了一
我有一个使用 Firebase Cloud Messaging 的服务使用 FCM Data messages 与其 Android 客户端通信与 collapse_key参数集。从有关可折叠键的文档
admin.messaging().sendToDevice(tokens, payload) 这是有效载荷: const payload = { collapse_key: "somethi
我已经问过折叠键限制并得到正确答案 here来自@ianhanniballake。现在,我想明确一些事情。 GCM collapse_keys 的限制在每个应用级别。 应用级别是什么意思?例如,在两个
我是一名优秀的程序员,十分优秀!