django - 在将 Firebase Cloud Messaging 与 Django-Push-Notifications 结合使用时,如何使用 TTL 来防止消息积压?
问题描述
我正在使用django-push-notifications在 Django 中使用 Firebase Cloud Messaging,通过桌面通知向我们的用户发送推送通知。
浏览器完全关闭后(例如计算机关闭时),我们的用户会在下次启动时收到之前发送的所有通知的积压。
虽然在某些情况下用户希望收到整个积压的消息,但这不是其中之一。
根据 FCM 文档的这一部分,似乎答案是设置 TTL=0,但我的尝试并没有产生预期的行为。
请帮助我在这种情况下更好地理解 TTL。如果 TTL 是正确的方法,那么在send_message()
使用 django-push-notifications 时格式化 TTL 的正确方法是什么,这样如果不立即传递消息就不会累积?
这是我尝试过的:
devices.send_message(
body,
TTL=0,
time_to_live=0,
link='blah',
extra={'title': 'blah blah', 'icon': '/foo/bar.png'}
)
解决方案
您发送的格式似乎与您链接的文档中的格式不同。从文档中:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
"apns":{
"headers":{
"apns-expiration":"1604750400"
}
},
"android":{
"ttl":"4500s"
},
"webpush":{
"headers":{
"TTL":"4500"
}
}
}
}
所以这里的关键是 webpush 消息的生存时间设置在 下webpush/headers/TTL
,而您将其添加到顶层。
推荐阅读
- search - Blogger 搜索仅显示 7 个结果
- python - 模拟 subprocess.Popen
- javascript - 如何添加 rangeslider.js 以控制 Slick Slider 的拖动
- python - 在 Python 中分隔括号外和括号内的单词并放入单独的列中?
- php - 生成参考时未定义偏移的问题
- ruby-on-rails - St_split 返回原行
- java - 使用 jxl 在 Java 中读取 EXCEL 文件
- swift - NSEvent.addLocalMonitorForEvents 的内存泄漏
- java - 根据用户输入输出editText和textViews?
- java - 无法通过服务检查应用程序是否正在使用相机