android - Reciba mensajes GCM incluso cuando la aplicación esté cerrada(deslizable/deslizada)
google-cloud-messaging firebase-cloud-messaging (2)
Aquí está el código que se usa como BroadcastReceiver dentro de mi MainActivity
//Initializing our broadcast receiver
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
//When the broadcast received
//We are sending the broadcast from GCMRegistrationIntentService
@Override
public void onReceive(Context context, Intent intent) {
//If the broadcast has received with success
//that means device is registered successfully
if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
//Getting the registration token from the intent
String token = intent.getStringExtra("token");
//Displaying the token as toast
Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();
//if the intent is not with success then displaying error messages
} else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
}
}
};
Seguí este tutorial sobre GCM
https://www.simplifiedcoding.net/android-push-notification-using-gcm-tutorial/
Cerrar la aplicación deslizándola (más comúnmente conocida como deslizarla) no mata totalmente la aplicación. Echa un vistazo a esta answer en la comunidad de entusiastas de Android para obtener una descripción más detallada. Puede ver allí que se menciona que:
No causará que los servicios se detengan directamente.
Dado que los oyentes para las notificaciones de GCM son
Service
, esto significaría que todavía existe la posibilidad de que su aplicación continúe recibiéndolas, independientemente de si se
borra
.
Aunque el resultado de deslizar una aplicación también puede diferir dependiendo del dispositivo que esté ejecutando, uno puede matarlo / forzarlo a detenerlo u otro, tal como se mencionó anteriormente, detendrá los procesos en segundo plano.
Sin embargo, si el resultado es, la aplicación se cancela / se detiene la fuerza, como se menciona en la respuesta del enlace anterior:
Para detener es una eliminación completa de la aplicación: se eliminan todos los procesos, se detienen todos los servicios , se eliminan todas las notificaciones, se eliminan todas las alarmas, etc.
Lo que daría como resultado que la aplicación no reciba ningún tipo de notificaciones, ya que fue diseñada para Android desde la versión 3.1, como se indica en esta answer :
Las aplicaciones que están en estado detenido no reciben Intentos de transmisión.
El estado detenido es:
cuando la aplicación se instala inicialmente (antes de que el usuario ejecute algo en la aplicación) o después de una detención forzada. Puede encontrar más información sobre esto aquí: http://developer.android.com/about/versions/android-3.1.html#launchcontrols
Espero que esto ayude a aclarar algunas cosas de alguna manera. ¡Salud! :RE
Puede probar con
GcmListenerService
Cuando cierra su aplicación deslizando hacia afuera, el servicio todavía está activado en segundo plano y puede recibir notificaciones automáticas.
A menos que el usuario fuerce manualmente la configuración de detención de la aplicación, este servicio lo ayuda.