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.
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:
Ten en cuenta que
user
en el código de ejemplo anterior se refiere al objeto de usuario autenticado.