Skip to content

Latest commit

 

History

History
92 lines (67 loc) · 2.63 KB

push-notifications.md

File metadata and controls

92 lines (67 loc) · 2.63 KB

Пуш уведомления через Firebase

Создаем проект на сайте Firebase

  1. Нужно создать приложения для любимых фронтендеров и мобильных разработчиков

Изображение приложений

  1. Получить серверный ключ для Django в настройках проекта (Project Settings) во вкладке Cloud Messaging

  2. Не забудьте отправить конфигурационные файлы для фронтендеров и мобильных разработчиков, чтобы они смогли настроить уведомления

Устанавливаем зависимости

$ pip install django-push-notifications

Документация к библиотеке

Настраиваем settings.py

INSTALLED_APPS = (
        ...
        "push_notifications"
)

PUSH_NOTIFICATIONS_SETTINGS = {
        "FCM_API_KEY": "[your api key]",
}

Поднимаем модели в БД

$ python manage.py migrate

Делаем преднастройку

  1. serializers.py
from push_notifications.api.rest_framework import GCMDeviceSerializer, GCMDevice

class FCMDeviceSerializer(GCMDeviceSerializer):

    def create(self, validated_data):
        validated_data['cloud_message_type'] = "FCM"
        instance = GCMDevice.objects.create(
            **validated_data
        )
        return instance
  1. views.py
from push_notifications.api.rest_framework import GCMDeviceAuthorizedViewSet

from . import serializers

class FCMDeviceAuthorizedViewSet(GCMDeviceAuthorizedViewSet):
    serializer_class = serializers.FCMDeviceSerializer
  1. urls.py
router = SimpleRouter()

router.register(r'device/fcm', views.FCMDeviceAuthorizedViewSet)
  1. notifications.py (нужно создать файлик)
from push_notifications.models import GCMDevice
from . import models


def notify_user(user, message):
    devices = GCMDevice.objects.filter(user=user)
    devices.send_message(message)


def notify_many_users(users, message):
    for user in users:
        notify_user(user, message)


def notify_all(message):
    devices = GCMDevice.objects.all()
    devices.send_message(message)

Дальше во всех местах, где нужно уведомлять пользователей системы используй те методы, которые тебе нужны.