Django和FCM发送推送通知

时间:2020-05-30 12:14:41

标签: django push-notification firebase-cloud-messaging

通过自定义Device-info模型使用fcm-django的正确方法是什么,或者可以扩展具有更多属性的FCMDevice?

例如,我需要在设备信息中存储一些其他字段,例如语言,位置(经纬度),应用版本,供应商等。

我是FCM的新手,但对我而言,目前还不太清楚设备注册流程。 我当前的项目是针对移动应用程序的后端服务。因此,我有一些使用djnago-rest-framework的REST服务。

我已经具有注册/更新移动设备的API。我可以重复使用它添加FCM注册ID吗?

1 个答案:

答案 0 :(得分:0)

您可以通过扩展AbstactFCMDevice类来定义自定义FCMDevice类,如下所示:

from fcm_django.models import AbstractFCMDevice
from django.db import models

class CustomFCMDevice(AbstractFCMDevice):
    language = models.CharField(max_length=35, blank=False)
    position = models.CharField(max_length=35, blank=False)
    app_version = models.CharField(max_length=35, blank=False)
    ...
    ..

然后您可以使用自定义类获取查询集:

from custom_fcm_django.models import CustomFCMDevice

device = CustomFCMDevice.objects.all().first()

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

您可以使用django rest框架APIView创建您的API端点,例如:

from rest_framework.views import APIView

class FCMDevicesListAPIView(APIView):

permission_classes = (IsAuthenticated, )

def get(self, request):
    queryset = CustomFCMDevice.objects.all()
    serializer = FCMDeviceSerializer(queryset, many=True)
    return Response(serializer.data)