当前位置: 首页 > 知识库问答 >
问题:

当使用带有Django-Push-Notifications的Firebase云消息传递时,如何使用TTL来防止消息积压?

王才英
2023-03-14

我正在使用Django中的Firebase云消息传递,使用django-push-notifications通过桌面通知向用户提供推送通知。

在浏览器完全关闭后(例如当计算机关闭时),我们的用户在下次启动时会收到先前发送的所有通知的积压。

虽然在某些情况下,用户希望接收全部积压的消息,但这并不是其中之一。

答案似乎是按照FCM文档的这一节设置TTL=0,但我的尝试并没有导致所需的行为。

请帮助我在这个上下文中更好地理解TTL。如果TTL是正确的方法,那么使用django-push-notifications在send_message()中格式化TTL的正确方法是什么,这样消息不会在不立即传递的情况下累积?

以下是我的尝试:

devices.send_message(
    body,
    TTL=0,
    time_to_live=0,
    link='blah',
    extra={'title': 'blah blah', 'icon': '/foo/bar.png'}
)

共有1个答案

瞿文柏
2023-03-14

您发送的格式似乎与您链接的文档中的格式不同。从文档中可以看到:

{
  "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/headers/TTL下设置webpush消息的生存时间,同时将其添加到顶层。

 类似资料:
  • 我想使用谷歌的Firebase为网络构建一个消息应用程序。在这个应用程序中,用户应该向/从其他用户发送和接收消息。我检查了谷歌的Firebase网站,但我迷路了。你能告诉我从哪里开始吗?你能给我看任何与Firebase网络消息相关的教程或类似的东西吗?我欢迎任何建议。谢谢。

  • 我试图将Firebase云消息集成到我的应用程序中,以便向用户发送通知。当试图启动应用程序,我得到以下错误: 这在这里发生: 在FIRAuthm. 这是我的大多数应用委托的样子: 发生了什么,我如何修复这个错误? 我试着按照这里的指示去做。。。

  • 我正在开发Android/iOS应用程序使用离子框架(网络技术),我想添加推通知与新的firebase功能FCM的帮助。 null 这是否意味着我可以在Android/iOS的ionic应用程序中使用它,因为应用程序是使用Cordova构建的?

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • 我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

  • 我试图让Android BroadcastReceiver在Android系统收到Firebase云消息通知时运行。 AndroidManifest中需要指定如下接收器标记: 正如您在上面的清单中看到的,我添加了: 确保当我将电缆插入Android设备时,BroadcastReceiver启动。它工作得很好。 因此,问题在于: BroadcastReceiver是否无法识别此意图筛选器操作?Bro