Tiene dos opciones para asignar prioridad de entrega a mensajes posteriores en Android: prioridad normal y alta. La entrega de mensajes normales y de alta prioridad funciona así:
Prioridad normal. Esta es la prioridad predeterminada para los mensajes de datos . Los mensajes de prioridad normal se entregan inmediatamente cuando el dispositivo no está en modo de suspensión. Cuando el dispositivo está en modo Dormir , la entrega puede retrasarse para conservar la batería hasta que el dispositivo salga del modo Dormir. Para mensajes menos urgentes, como notificaciones de nuevos correos electrónicos, mantener sincronizada la interfaz de usuario o sincronizar datos de aplicaciones en segundo plano, elija la prioridad de entrega normal.
Al recibir un mensaje de prioridad normal en Android que solicita una sincronización de datos en segundo plano para su aplicación, puede programar una tarea con WorkManager para manejarla cuando la red esté disponible.
Alta prioridad. FCM intenta entregar mensajes de alta prioridad inmediatamente, lo que le permite reactivar un dispositivo inactivo cuando sea necesario y ejecutar algún procesamiento limitado (incluido un acceso a la red muy limitado). Los mensajes de alta prioridad generalmente deberían resultar en la interacción del usuario con su aplicación o sus notificaciones.
Uso de mensajes de alta prioridad para Android
Los mensajes de alta prioridad en Android están destinados a contenido visible para el usuario y urgente, y deberían generar notificaciones para el usuario. Si FCM detecta un patrón en el que los mensajes no dan lugar a notificaciones dirigidas al usuario, es posible que sus mensajes pierdan su prioridad a la prioridad normal. FCM utiliza 7 días de comportamiento de mensajes para determinar si se deben quitar prioridad a los mensajes; toma esta determinación de forma independiente para cada instancia de su aplicación. Si, en respuesta a mensajes de alta prioridad, las notificaciones se muestran de manera que sean visibles para el usuario, sus futuros mensajes de alta prioridad no perderán su prioridad. Esto se aplica tanto si el SDK de FCM muestra la notificación a través de un mensaje de notificación como si es una notificación generada por el desarrollador a través de un mensaje de datos .
Medición de la despriorización de mensajes en Android
Mensajes individuales. En el momento de la entrega, puede determinar si a un mensaje individual se le quitó la prioridad o no comparando su prioridad de entrega, de getPriority() , con su prioridad original, de getOriginalPriority().
Todos los mensajes. La API de datos de entrega agregada de FCM puede informar qué porcentaje de todos sus mensajes a Android no tienen prioridad. Es posible que algunos mensajes se omitan de los informes de datos agregados, pero en general deberían brindar una visión global de las tasas de despriorización de mensajes. Consulte nuestro artículo sobre datos de entrega agregados para obtener más información y código de muestra para consultar la API; también se puede explorar desde el explorador API .
Solución de problemas
Asegúrese de que la instancia de su aplicación tenga las notificaciones habilitadas. Si el usuario ha desactivado el permiso de notificación para su aplicación, ninguna de sus notificaciones se publicará y, como resultado, sus mensajes perderán prioridad. Debe verificar que las notificaciones estén habilitadas antes de enviar mensajes de alta prioridad a una instancia de la aplicación.
No llame a casa antes de publicar una notificación. Debido a que una pequeña parte de la población de dispositivos móviles con Android se encuentra en redes de alta latencia, evite abrir una conexión a sus servidores antes de mostrar una notificación. Volver a llamar al servidor antes de que finalice el tiempo de procesamiento permitido puede resultar riesgoso para los usuarios de redes de alta latencia. En su lugar, incluya el contenido de la notificación en el mensaje FCM y muéstrelo inmediatamente. Si necesita sincronizar contenido adicional en la aplicación en Android, puede programar una tarea con WorkManager para manejarlo en segundo plano.