在快节奏的移动应用世界中,保持用户参与度是一项挑战。今天,我们探讨 Django 如何通过设置推送通知来让用户了解情况并保持联系,从而帮助开发人员应对用户脱离的问题。
在 Django 中设置推送通知
推送通知就像一个友好的提醒,通过更新或提醒将用户带回到您的应用程序。 Django 可以通过几个基本步骤有效地处理这个问题。
第 1 步:构建通知模型
首先,Django 需要一个通知模型。此模型将存储您的应用发送给用户的所有通知。
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')
第 2 步:创建发送通知函数
接下来,我们将添加一个功能来发送这些通知。这是我们编写在需要时发送消息的逻辑的地方,确保用户获得实时更新。
#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
第 3 步:设置信号
Django 可以使用信号根据用户操作触发通知,例如新消息或已完成的任务。
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)
第4步:在后台注册
最后,通过在 Django 管理面板中注册通知模型,我们可以轻松管理通知,让一切井然有序并准备就绪。
from django.contrib import admin from .models import * admin.site.register(Notification)
集成 Firebase 以实现前端通知
为了确保通知到达用户的设备,Django 与 Firebase 合作。
以上是使用 Django 推送通知赢得用户脱离的战斗的详细内容。更多信息请关注PHP中文网其他相关文章!