En Android, hay dos opciones para asignar una prioridad de entrega a los mensajes descendentes: prioridad normal y alta. La entrega de los mensajes con prioridad normal o alta funciona de la siguiente manera:
Prioridad normal. Esta es la prioridad predeterminada para los mensajes de datos. Los mensajes con prioridad normal se entregan de inmediato cuando el dispositivo no está suspendido. Cuando el dispositivo está en modo Descanso, es posible que la entrega se retrase para conservar la batería hasta que el dispositivo salga de este modo. Para los mensajes menos urgentes, como las notificaciones de correos electrónicos nuevos, la sincronización de IU o la sincronización de datos de app en segundo plano, selecciona la prioridad de entrega normal.
Cuando recibas un mensaje de prioridad normal en Android que solicite una sincronización de datos en segundo plano para tu app, debes programar una tarea con WorkManager para controlarla cuando la red esté disponible.
Prioridad alta. FCM intenta entregar los mensajes de alta prioridad de inmediato, lo que permite que FCMactive un dispositivo suspendido cuando sea necesario y ejecute un procesamiento limitado (incluido el acceso de red altamente limitado). En general, los mensajes con prioridad alta generan la interacción de los usuarios con la app o sus notificaciones.
Administración de mensajes y reducción de la prioridad de los mensajes en Android
Los mensajes de prioridad alta en Android están diseñados para el contenido que es sensible al tiempo y visible para el usuario, y deben generar notificaciones para el usuario. Si FCM detecta un patrón en el que los mensajes no generan notificaciones para el usuario, es posible que la prioridad de tus mensajes no sea la normal o que se deleguen para que los Servicios de Google Play los manejen.
FCM usa 7 días de comportamiento de mensajes para determinar si se debe reducir la prioridad de los mensajes o usar un proxy para ellos. Establece esta determinación de forma independiente para cada instancia de tu aplicación. Si, en respuesta a los mensajes de prioridad alta, las notificaciones se muestran de una manera visible para el usuario, entonces no se verán afectados los futuros mensajes de alta prioridad.
Delegación de notificaciones con Servicios de Google Play
Los Servicios de Google Play envían a través de proxy los mensajes de notificación de alta prioridad (no los mensajes de datos) que cumplen con ciertos criterios en lugar de reducirles la prioridad. Esto significa que los Servicios de Google Play muestran las notificaciones en nombre de la app, sin necesidad de iniciarla. Esto se hace para proporcionar una mejor experiencia general del usuario en dispositivos Android.
Ten en cuenta que los mensajes de notificación con proxy introducen cambios en la manera en que se informan las estadísticas relacionadas con los mensajes recibidos:
- Para que se informen las estadísticas de las notificaciones con proxy, tu app debe usar la versión 24.0.0 del SDk de FCM o una versión posterior.
- Es posible que notes demoras o disminuciones en la cantidad de mensajes recibidos en comparación con la cantidad anterior a la introducción de las notificaciones con proxy. Esto se debe a que las estadísticas de las notificaciones con proxy solo se informan una vez que se inicia la app y es posible que no se informen en absoluto si la notificación no hace que se abra la app.
Usar proxies con los mensajes de notificación de esta manera es el comportamiento predeterminado de las apps que usan la versión 19054000 o posterior de Android Q+ y los Servicios de Google Play. Los mensajes enviados a través de la API de HTTP v1 se pasan a través de un proxy, pero los mensajes enviados a través de Firebase console o las APIs heredadas no se pasarán a través de un proxy. Ten en cuenta que esta función se encuentra en fase beta y está sujeta a cambios.
Aunque recomendamos dejar habilitada la delegación por sus beneficios para la batería y la memoria del dispositivo, puedes inhabilitar este comportamiento en cualquiera de estas maneras:
- A nivel de la app: En el manifiesto de la app, agrega la directiva
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
. - En una instancia de app: Para la instancia de app, configura
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
en el flujo de la IU de tu app, según el caso de uso específico. - Por mensaje: Establece la clave
proxy
enDENY
en el objetoAndroidNotification
de la solicitud de envío.
Mide la prioridad de los mensajes en Android
Mensajes individuales. Al momento de la entrega, puedes determinar si se redujo la prioridad de un mensaje individual o no; para ello, compara su prioridad publicada desde getPriority() con su prioridad original desde getOriginalPriority().
Todos los mensajes. La API de FCM Aggregate Delivery Data puede informar qué porcentaje de todos tus mensajes a Android tiene una reducción de la prioridad. Es posible que se omitan algunos mensajes de los informes con datos agregados, pero, en general, deberían brindar una vista global de las tasas de priorización de mensajes. Revisa nuestro artículo sobre los datos de entrega agregados para obtener más información y un código de muestra para consultar la API. También se puede consultar desde el Explorador de API.
Notificaciones con proxy. Las notificaciones con proxy no se registrarán en las métricas de entrega actuales de FCM o GA, por lo que es posible que experimentes una disminución de hasta el 15% en las métricas de entrega de notificaciones. Para generar informes sobre los mensajes con proxy, usa la API de FCM Aggregate Delivery Data.
ProxyNotificationInsightPercents
informa el porcentaje de notificaciones con proxy que se entregaron correctamente, así como los detalles de los mensajes que no se pudieron entregar correctamente a través de proxies.
Soluciona problemas
Asegúrate de que la instancia de la app tenga habilitadas las notificaciones. Si el usuario inhabilitó el permiso de notificaciones de tu app, no se publicará ninguna de las notificaciones y, por lo tanto, se anulará la prioridad de los mensajes. Debes verificar que las notificaciones estén habilitadas antes de enviar mensajes de prioridad alta a una instancia de la aplicación.
No llames a casa antes de publicar una notificación. Como una pequeña porción de la población móvil de Android se encuentra en redes de alta latencia, evita abrir una conexión a tus servidores antes de mostrar una notificación. La devolución de llamadas al servidor antes del final del tiempo de procesamiento permitido puede ser algo arriesgado para los usuarios en redes de alta latencia. En lugar de eso, incluye el contenido de la notificación en el mensaje de FCM y muéstralo de inmediato. Si necesitas sincronizar contenido adicional de la app en Android, puedes programar una tarea con WorkManager para controlar el proceso en segundo plano.