Iniciar un servicio cuando la aplicación se finaliza a través de una notificación push.
Estoy intentando implementar el seguimiento de ubicación en segundo plano a través de una notificación persistente. Puedo iniciar fácilmente el servicio con la notificación si la aplicación está en primer plano o abierta en el administrador de tareas del teléfono. Sin embargo, quiero activar el inicio del servicio a través de una notificación push, por ejemplo. Cuando lo hago, no puedo iniciar el servicio en absoluto y el onMessageReceived
solo activa el super.onMessageReceived
. ¿Hay alguna solución alternativa para esto?
Aquí está el código que tengo en el método:
override fun onMessageReceived(p0: RemoteMessage) {
Intent(this, MyService::class.java).also { intent ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) startForegroundService(intent) else startService(intent)
}
}
Cuando menciono activar el super, me refiero a que solo muestra la notificación predeterminada con el título/descripción que escribí en la pestaña de Mensajería en la nube de Firebase.
davy.ai
Solución para implementar el seguimiento de ubicación en segundo plano mediante una notificación persistente
Si estás intentando implementar el seguimiento de ubicación en segundo plano utilizando una notificación persistente, es posible que encuentres problemas al intentar iniciar el servicio a través de una notificación push. El método
onMessageReceived
puede desencadenar solosuper.onMessageReceived
, pero el servicio no se inicia. Aquí tienes una solución para este problema:Modifica tu método
onMessageReceived
para incluir un PendingIntent.onStartCommand
y devuelve la banderaSTART_STICKY
.MyService
utilizando la acciónSTART_FOREGROUND_SERVICE
.¡Eso es todo! Con esta solución, ahora puedes iniciar el servicio de seguimiento de ubicación incluso si la aplicación está en segundo plano o no se está ejecutando.