通过FCM令牌从Django发送通知到GCM

6

我正在学习Django-Android交互的初步步骤,但对于FCM技术的工作逻辑有些困惑。我通过pip安装了django-fcm,现在我的目标是通过由Android设备通过REST资源发送到服务器的FCM令牌向Android设备发送通知。

第三方Android开发人员告诉我他们只会给我FCM令牌,我应该能够发送通知。以下来自文档的代码片段让我有些困惑。

devices = FCMDevice.objects.all()

什么是FCM设备?JSON代码示例中的作用是什么:
{
        "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "notification" : {
          "body" : "great match!",
          "title" : "Portugal vs. Denmark",
          "icon" : "myicon"
        }
    }

以下内容与此相关:

device = FCMDevice.objects.all().first()
device.send_message("Title", "Message")
device.send_message(data={"test": "test"})
device.send_message(title="Title", body="Message", icon=..., data={"test": "test"})

问题是:如何用最少的代码片段向由其 FCM 令牌标识的 Android 设备发送最简单的通知。

2个回答

7
要通过您的Django应用程序服务器发送通知,您需要执行以下操作:
  1. 安装django-fcm并将'fcm_django'添加到您的INSTALLED_APPS中。
  2. 运行迁移以便在数据库中准备好设备关系。
  3. 假设您已经可以从Firebase控制台发送通知,请转到Firebase控制台设置。在Cloud Messaging选项卡上,复制Server Key。将此密钥保存在您的Django配置设置中,如FCM_APIKEY = <your_api_key>
  4. 转到您的安卓设备并检索令牌,有关此操作的文档位于https://firebase.google.com/docs/cloud-messaging/android/client
  5. 现在在Django中创建一个设备实例,使用检索到的令牌作为reg_id。
  6. 要发送通知,可以使用以下代码发送通知:device_instance.send_message(notification = { "body" : "great match!","title" : "Portugal vs. Denmark","icon" : "myicon"})

要全面了解django-fcm的工作原理,建议您实际浏览源代码。如果开源软件包困扰我,实际查看源代码并阅读注释有时是启发性的。django-fcm是一个小而简单的软件包。 utils.py文件是最重要的,那里组合了消息并使用python的requests包将其发送到Firebase。要理解此文件,请还阅读Firebase的文档:https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json


这个库是 fcm_django(https://github.com/xtrinch/fcm-django)。应该将“fcm_django”添加到您的 INSTALLED_APPS 中吗? - Big Pumpkin

2
首先,FCMDevice是一个Django模型对象,包含有关已注册设备的数据,可以向其发送通知。
预期您提供该数据。当您的移动设备/浏览器从fcm库获取该数据的FCM令牌时,预期您在使用fcm-django库的后端中注册该令牌。
也就是说,您需要使用库中的FCMDevice模型在数据库中创建一个对象。
要发送通知所需的最小代码正是您在此帖子中发布的内容。
我认为您应该阅读一些Django教程,以更好地理解模型的实际含义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接