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
Lepaskan: 2024-12-06 22:49:12
asal
666 orang telah melayarinya

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

Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan