es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo registrar un dispositivo en FCMDevice de fcm-django?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzcas el código y la salida en Markdown.

Soy principiante en Django.

Refiriéndome a este enlace, instalé fcm-django y terminé la configuración.
fcm-django doc

  • Instale fcm-django.
pip install fcm-django
  • Configuración de fcm-django en settings.py.
import firebase_admin
from firebase_admin import credentials

cred_path = os.path.join(BASE_DIR, "serviceAccountKey.json")
cred = credentials.Certificate(cred_path)
firebase_admin.initialize_app(cred)

...

INSTALLED_APPS = [
    ...
    'fcm_django',
]

...

FCM_DJANGO_SETTINGS = {
    # default: ('FCM Django')
    "APP_VERBOSE_NAME": "django_fcm",
    # Tu clave de API de Firebase
    "FCM_SERVER_KEY": "AAAAsM1f8bU:APA91bELsdJ8WaSy...",
    # True si deseas tener solo un dispositivo activo por usuario registrado en un momento dado
    # valor predeterminado: False
    "ONE_DEVICE_PER_USER": False,
    # los dispositivos a los que no se pueden enviar notificaciones,
    # se eliminan al recibir una respuesta de error de FCM
    # valor predeterminado: False
    "DELETE_INACTIVE_DEVICES": True,
}

Y cuando publico un aviso, si la notificación está activa, intento enviar notificaciones push a todos los dispositivos.

from firebase_admin.messaging import Message, Notification
from fcm_django.models import FCMDevice

class NoticeCreateView(View):
    def post(self, request, *args, **kwargs):
        title = request.POST.get('title')
        content = request.POST.get('content')
        push = request.POST.get('push')

    if push:
        message = Message(
            notification=Notification(
                title=title,
                body=content,
            ),
        )

        try:
            devices = FCMDevice.objects.all()
            devices.send_message(message)
        except Exception as e:
            print('Fallo en enviar la notificación push.', e)

    return HttpResponseRedirect(reverse('notice_list'))

Lo que me causa curiosidad es si los datos se agregan automáticamente en el modelo FCMDevice cuando el usuario instala esta aplicación.

Si tengo que generar los datos manualmente, me pregunto cómo obtener un token de registro FCM y cómo implementar la adición de datos al modelo FCMDevice.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la documentación de fcm-django, el modelo FCMDevice debe ser poblado manualmente con los detalles del dispositivo del usuario. Esto se puede hacer llamando al método FCMDevice.objects.create() y pasando los parámetros requeridos como registration_id (token de registro FCM), cloud_message_type (usar “FCM” para Firebase Cloud Messaging) y user (objeto User).

    Para obtener el token de registro FCM para un dispositivo, primero necesitas solicitar permiso al usuario para recibir notificaciones push. Una vez concedido, puedes usar el SDK de Firebase Cloud Messaging en tu aplicación para obtener el token de registro del dispositivo. Este token luego se puede almacenar en el modelo FCMDevice para ese usuario.

    Aquí tienes un ejemplo de cómo crear un objeto FCMDevice para un usuario:

    from fcm_django.models import FCMDevice
    
    # Obtén el token de registro FCM para el dispositivo
    registration_id = "el-token-de-registro-del-dispositivo"
    
    # Crea el objeto FCMDevice para el usuario
    device = FCMDevice.objects.create(
        registration_id=registration_id,
        cloud_message_type="FCM",
        user=user
    )
    

    Ten en cuenta que user en el código de ejemplo anterior se refiere al objeto de usuario autenticado.

Comments are closed.