如何在Django Admin中监听Firebase的真实的数据库

ajsxfq5m  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(83)

我有一个Flutter项目,它可以从Django Panel接收推送通知。在Flutter项目中,我有一个向特定用户发送推送通知的函数。现在,我想扩展这个功能,将通知发送给我的Django管理员,并将它们显示为桌面通知。
我已经研究了Firebase的文档,但找不到从Django Panel监听实时数据库的方法。Flutter、Firebase和Django之间有可能实现这种集成吗?如果是,我应该考虑哪些方法或替代方案?
以下是我迄今为止尝试过的:

  • 已查看Firebase文档中的所有相关信息。
  • 在线搜索类似的使用案例,但无法找到合适的解决方案。

在我的Django面板中,我使用了以下代码来监听通知更改:

cred = credentials.Certificate('my-credentials')
firebase_app = firebase_admin.initialize_app(cred, {
    'databaseURL': 'my-project-firebase-link'
})

notification_ref = db.reference('notifications')

def listen_to_notification_changes(event):
    notification_data = list(event.data.values())
    latest_notification = notification_data[-1]
    if isinstance(latest_notification, dict):  
        title = latest_notification.get("title", "")
        subtitle = latest_notification.get("subtitle", "")
    else:
        title = ""  
        subtitle = ""  

    notification.notify(
        title=title,
        message=subtitle,    
    )

notification_ref.listen(listen_to_notification_changes)

但是,每次启动应用程序时都会执行此代码,显示最后一个通知,尽管它已经显示过了。此外,这段代码要求数据库中的所有通知,这不是最佳的,因为我只想要最后一个。我还知道Flutter提供了一种更有效的方法来实现相同的功能,使用FirebaseMessaging.onMessage侦听器
我将感谢任何关于如何优化此集成的指导或建议,并仅从实时数据库中检索最新的通知。此外,如果有其他方法我应该考虑,请让我知道。

ikfrs5lh

ikfrs5lh1#

根据文档,数据库的实时监听器仅在Node.js和Java的Admin SDK中可用,而不是在Python的Admin SDK中。
但是,您仍然可以通过使用查询来减少检索的数据量,这在Python的SDK中也是可用的。查询Firebase实时数据库包括以下几个步骤:
1.首先根据键、值或子属性的值对数据进行排序。
1.然后选择订购的值范围。
1.然后,您可以选择限制返回的结果数量。
例如,您可以在其中对键或一些时间戳值上的数据进行排序,并仅请求最新的值。

相关问题