Rumah >pembangunan bahagian belakang >Tutorial Python >Memenangi Pertempuran Menentang Pemisahan Pengguna dengan Pemberitahuan Tolak Django

Memenangi Pertempuran Menentang Pemisahan Pengguna dengan Pemberitahuan Tolak Django

Patricia Arquette
Patricia Arquetteasal
2024-12-06 22:49:12690semak imbas

Winning the Battle Against User Disengagement with Django Push Notifications

Dalam dunia aplikasi mudah alih yang pantas, memastikan pengguna sentiasa terlibat adalah satu cabaran. Hari ini, kami meneroka cara Django boleh membantu pembangun memerangi pengasingan pengguna dengan menyediakan pemberitahuan tolak untuk memastikan pengguna mendapat maklumat dan berhubung.

Menyediakan Pemberitahuan Tekan dalam Django

Pemberitahuan tolak adalah seperti peringatan mesra, membawa pengguna kembali ke apl anda dengan kemas kini atau makluman. Django boleh mengendalikan perkara ini dengan berkesan dengan beberapa langkah penting.

Langkah 1: Bina Model Pemberitahuan

Untuk bermula, Django memerlukan model pemberitahuan. Model ini akan menyimpan semua pemberitahuan yang dihantar oleh apl anda kepada pengguna.

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')

Langkah 2: Mencipta Fungsi Pemberitahuan Hantar

Seterusnya, kami akan menambah fungsi untuk menghantar pemberitahuan ini. Di sinilah kami menulis logik yang menghantar mesej apabila diperlukan, memastikan pengguna mendapat kemas kini masa nyata.

#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

Langkah 3: Menyediakan Isyarat

Django boleh menggunakan isyarat untuk mencetuskan pemberitahuan berdasarkan tindakan pengguna, seperti mesej baharu atau tugasan yang telah selesai.

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)

Langkah 4: Daftar dalam Admin

Akhir sekali, dengan mendaftarkan model pemberitahuan dalam panel pentadbir Django, kami boleh mengurus pemberitahuan dengan mudah, memastikan semuanya teratur dan bersedia.

from django.contrib import admin

from .models import *

admin.site.register(Notification)

Mengintegrasikan Firebase untuk Pemberitahuan Frontend
Untuk memastikan pemberitahuan sampai ke peranti pengguna, Django bekerjasama dengan Firebase.

Atas ialah kandungan terperinci Memenangi Pertempuran Menentang Pemisahan Pengguna dengan Pemberitahuan Tolak Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn