android google-cloud-messaging firebase-cloud-messaging

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.