ホームページ >バックエンド開発 >Python チュートリアル >Django プッシュ通知でユーザー離れとの戦いに勝つ

Django プッシュ通知でユーザー離れとの戦いに勝つ

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-06 22:49:12649ブラウズ

Winning the Battle Against User Disengagement with Django Push Notifications

モバイル アプリのペースの速い世界では、ユーザーの関心を維持することが課題です。今日は、プッシュ通知を設定してユーザーに情報を提供し、ユーザーとのつながりを維持することで、開発者がユーザーの離脱に対処するのに 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。