Maison >développement back-end >Tutoriel Python >Gagner la bataille contre le désengagement des utilisateurs avec les notifications push Django

Gagner la bataille contre le désengagement des utilisateurs avec les notifications push Django

Patricia Arquette
Patricia Arquetteoriginal
2024-12-06 22:49:12660parcourir

Winning the Battle Against User Disengagement with Django Push Notifications

Dans le monde trépidant des applications mobiles, maintenir l'engagement des utilisateurs est un défi. Aujourd'hui, nous explorons comment Django peut aider les développeurs à lutter contre le désengagement des utilisateurs en configurant des notifications push pour tenir les utilisateurs informés et connectés.

Configuration des notifications push dans Django

Les notifications push sont comme un rappel amical, ramenant les utilisateurs à votre application avec des mises à jour ou des alertes. Django peut gérer cela efficacement avec quelques étapes essentielles.

Étape 1 : Créer un modèle de notification

Pour commencer, Django a besoin d'un modèle de notification. Ce modèle stockera toutes les notifications que votre application envoie aux utilisateurs.

from django.db import models
from django.utils.translation import gettext_lazy as _

class Notification(models.Model):
    title = models.CharField(max_length=255, verbose_name=_('Notification title'))
    body = models.TextField(verbose_name=_('Notification body'))
    image = models.ImageField(upload_to='notifications/', null=True, blank=True)
    created_date = models.DateTimeField(auto_now_add=True)  # Add this field

    def __str__(self):
        return self.title

    class Meta:
        ordering = ("-created_date",)  # Now created_date exists
        verbose_name = _('Notification')

Étape 2 : Création d'une fonction de notification d'envoi

Ensuite, nous ajouterons une fonction pour envoyer ces notifications. C'est ici que nous écrivons la logique qui envoie le message en cas de besoin, garantissant ainsi aux utilisateurs d'obtenir des mises à jour en temps réel.

#notifcations.py

import os
from google.oauth2 import service_account
from google.auth.transport.requests import Request
import requests

def refresh_access_token(service_account_file):
    credentials = service_account.Credentials.from_service_account_file(
        service_account_file,
        scopes=["https://www.googleapis.com/auth/cloud-platform"],
    )
    credentials.refresh(Request())
    access_token = credentials.token
    return access_token

Étape 3 : Configuration des signaux

Django peut utiliser des signaux pour déclencher des notifications basées sur les actions de l'utilisateur, comme un nouveau message ou une tâche terminée.

from django.db.models.signals import post_save
from django.dispatch import receiver
import requests

# Import the Notification model and the refresh_access_token function
from my_app.models import Notification  # Change 'my_app' to your actual app name
from my_app.notifications import refresh_access_token  # Update the path if necessary
@receiver(post_save, sender=Notification)
def send_notification_on_creation(instance, created, **kwargs):
    if created:
        service_account_file = '/home/rv/Documents/rv/push_notification/core/my_app/test-project.json'
        tkn = refresh_access_token(service_account_file)
        print('tkn',tkn)
        endpoint = "https://fcm.googleapis.com/v1/projects/test-project-595ae/messages:send"
        access_token = tkn
        headers = {
            "Authorization": f"Bearer {access_token}",
            "Content-Type": "application/json",
        }

        data = {
            "message": {
                "token":"dnTB_cv9TZ25jsOkkQSS0x:APA91bEghK69zhqpTi2B5hPFtX0mpLSzdSQswrGEKl60PrUQDgy9RTIc_f9pjfxoyuUU-w8xjwk0WO1KtvbwF3bYFlQ21HWv-JueS-Fu7azhUsjgULDN41TTTiqONsqLsbIqS9_xKsUv",
                "notification": {
                    "title": instance.title,
                    "body": instance.body,
                }
            }
        }

        response = requests.post(endpoint, json=data, headers=headers)

        if response.status_code == 200:
            print("Push notification successfully sent!")
        else:
            print(f"Failed to send push notification. Status code: {response.status_code}")
            print(response.text)

Étape 4 : Inscrivez-vous dans l'administrateur

Enfin, en enregistrant le modèle de notification dans le panneau d'administration de Django, nous pouvons gérer les notifications facilement, en gardant tout organisé et prêt.

from django.contrib import admin

from .models import *

admin.site.register(Notification)

Intégration de Firebase pour les notifications frontales
Pour garantir que les notifications parviennent aux appareils des utilisateurs, Django s'associe à Firebase.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn