Notificaciones de Firebase (FCM) no aparecen cuando se ha eliminado la aplicación de Android de la bandeja reciente

Estoy enviando notificaciones de Firebase a través de mi propio webservice con PHP como a continuación.

$url = 'https://fcm.googleapis.com/fcm/send'; $fields = array( 'registration_ids' => $tokens, 'data' => $message ); $headers = array( 'Authorization:key = SERVER_KEY ', 'Content-Type: application/json' ); 

1.Notifications están viniendo cuando la aplicación está en primero plano y fondo sin ningunos problemas, pero si quité la aplicación de la bandeja reciente entonces las notificaciones que no vienen, debo tener que manejar esto cualquier solución para esto? (Como las notificaciones de Whatsup están mostrando todos los escenarios, incluso me obligó a detener esta aplicación de la configuración)

2.Once que recibí la notificación, de "onMessageReceived" cómo pasar estos mensajes, contenido del cuerpo a mi actividad / fragmentos?

3.En algunos casos quiero enviar notificación a todos, En lugar de agregar todos los tokens a la matriz. Cualquier otra forma de manejar como "enviar a todos" algo así?

 public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MsgService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); Log.d(TAG, "Data Payload : " + remoteMessage.getData()); sendNotification(remoteMessage.getData().get("message")); } private void sendNotification(String messageBody) { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("Firebase Push Notification") .setContentText(messageBody) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, notificationBuilder.build()); } } 

Dispositivos fallidos: (Las notificaciones no aparecen después de haber sido eliminadas de la bandeja reciente)

  • MI Redmi Nota 2 (5.0.2 Lollipop)
  • Huawei honor 5c (5.1.1 Lollipop)

Dispositivos que han tenido éxito: (Las notificaciones son enviadas después de retirar de la bandeja reciente)

  • HTC One X (4,2 Jelly Bean)
  • Samsung galaxy grand prime (4,4 Kitkat)

1.Notifications están viniendo cuando la aplicación está en primero plano y fondo sin ningunos problemas, pero si quité la aplicación de la bandeja reciente entonces las notificaciones que no vienen, debo tener que manejar esto cualquier solución para esto? (Como las notificaciones de Whatsup están mostrando todos los escenarios, incluso me obligó a detener esta aplicación de la configuración)

De acuerdo con tu código, debes obtener una excepción de puntero nulo en remoteMessage.getNotification().getBody() ya que no estás enviando notificación, en lugar de eso estás enviando datos desde tu solicitud de curl. Según mi experiencia personal, el problema que acaba de mencionar se ve especialmente en Android Kitkat o dispositivos por debajo. En Lollipop o por encima de Firebase empuje parece funcionar bien.

2.Once que recibí la notificación, de "onMessageReceived" cómo pasar estos mensajes, contenido del cuerpo a mi actividad / fragmentos?

Puede emitir una Transmisión desde onMessageReceived() y registrar un Receptor de Braodcast en su Actividad y enviar los datos en su intención de difusión. Ejemplo de código:

Actividad

 private BroadcastReceiver receiver; @Overrride public void onCreate(Bundle savedInstanceState){ // your oncreate code IntentFilter filter = new IntentFilter(); filter.addAction("SOME_ACTION"); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String message = intent.getStringExtra("message"); } }; registerReceiver(receiver, filter); } @Override protected void onDestroy() { if (receiver != null) { unregisterReceiver(receiver); receiver = null } super.onDestroy(); } 

FirebaseMessagingService

 public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MsgService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); Log.d(TAG, "Notification Message Body: " + remoteMessage.getData()); Intent intent=new Intent(); intent.setAction("SOME_ACTION"); intent.putExtra("message", remoteMessage.getNotification().getBody()); sendBroadcast(intent); } } 

3.En algunos casos quiero enviar notificación a todos, En lugar de agregar todos los tokens a la matriz. Cualquier otra forma de manejar como "enviar a todos" algo así?

No hay nada como "Enviar a TODOS" en Firebase API, la única manera de hacerlo es utilizando Firebase Console que tienen sus propios problemas para manejar como un problema de icono blanco y extraer los parámetros personalizados de su notificación.

Yo estaba teniendo problemas con FCM en exactamente Mi teléfono y Huawei teléfono también! Resulta que no era un problema con FCM o su aplicación, sino en su nivel de dispositivo.

Tienen configuración de aplicación de nivel de dispositivo que deshabilita las notificaciones o incluso bloqueo de la sesión, por lo que onMessageReceived () no se activa cuando llega el mensaje. Después de cambiar la configuración (principalmente permiten notificaciones y desactivar la optimización de la batería para mi aplicación), todo funciona bien!

Consulte Mensajería en la nube Firebase no recibida cuando la aplicación se encuentra en segundo plano .

Este problema necesita implementación de back-end. Permítanme discutir cómo superar esta deficiencia.

Somos conscientes del ciclo de vida de la Actividad. Así que al destruir, llamo a un servicio desde el back-end que anula el registro de mi cliente. Todos los mensajes entrantes ahora se pondrán en cola para la entrega ya que el token para el cliente de destino no está registrado.

Así que al devolver la aplicación, llamo a un servicio back-end que registra mi cliente. El back end ahora empieza a enviar mensajes desde la cola con el nuevo token de cliente para mi dispositivo.

  • Uri a la notificación de sonido por defecto?
  • Notificaciones de Android: tienen colores en un icono pequeño
  • Cómo realizar un seguimiento de las notificaciones para saber cuándo mostrar una notificación resumida
  • Cómo mostrar el recuento de notificaciones en el icono de la barra de herramientas en android
  • NameError: uninitialized constant Rpush :: Gcm Estoy intentando usar rpush para mi aplicación móvil. Pero sigo recibiendo este error
  • Cancelación automática de la notificación en un momento determinado
  • Notificación incorrecta enviada desde el paquete, no se pudo expandir RemoteViews
  • Android: no se pueden mostrar varias líneas de texto en la notificación
  • Android JellyBean BigTextStyle Notificación no funciona - HTC One X AT & T
  • No hay sonido de notificación personalizado
  • Intención de reanudar una actividad previamente detenida (llamada desde una notificación)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.