L'application Android n'est pas la réception de la FCM de notification lors de la fermeture

Je suis vérification Firebase Messagerie En Nuage d'envoyer une notification. Déjà implémenté et sa réception de la notification lorsque l'application est en état ouvert. Mais si je ferme l'app, sa ne donne plus de notification. Est-il une solution pour cela.

Code:

WebRequest wRequest;
wRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
wRequest.Method = "post";
wRequest.ContentType = " application/json;charset=UTF-8";
wRequest.Headers.Add(string.Format("Authorization: key={0}", AppId));

wRequest.Headers.Add(string.Format("Sender: id={0}", SenderId));

string postData = "{\"registration_ids\":[\"" + regIds + "\"], \"data\": "+ value +"}";

Byte[] bytes = Encoding.UTF8.GetBytes(postData);
wRequest.ContentLength = bytes.Length;

Stream stream = wRequest.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();

WebResponse wResponse = wRequest.GetResponse();

Service de messagerie-

public class MessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Map<String, String>  data = remoteMessage.getData();
sendNotification(data);
}
public void showMessage(Map<String, String>  serverData) {
Intent i = new Intent(this,MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setContentTitle(serverData.get("Title"))
.setContentText(serverData.get("Message"))
.setSmallIcon(R.drawable.common_google_signin_btn_icon_dark)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(Integer.parseInt(serverData.get("ItemId")),builder.build());
}
private void sendNotification(Map<String, String>  serverData) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0 /* request code */, intent,PendingIntent.FLAG_UPDATE_CURRENT);
long[] pattern = {500,500,500,500,500};
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.common_google_signin_btn_icon_dark)
.setContentTitle(serverData.get("Title"))
.setContentText(serverData.get("Message"))
.setAutoCancel(true)
.setVibrate(pattern)
.setLights(Color.BLUE,1,1)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(Integer.parseInt(serverData.get("ItemId")), notificationBuilder.build());
}
}

Activité principale-

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirebaseMessaging.getInstance().subscribeToTopic("test");
FirebaseInstanceId.getInstance().getToken();
}
}

Manifeste-

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="test.com.firebasenotify">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".InstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
  • Afficher la fcm auditeur classe, et de montrer le POSTE demande de vous rendre à la fcm
  • Mise à jour du service de messagerie, la FCM poste et l'activité principale de code
  • Avez-vous recevez le message dans la onreceive au moins?
  • oui je reçois le message sur onMessageReceived lorsque mon application est ouverte, ou au moins en cours d'exécution en arrière-plan et également obtenir la notification. Si je ferme l'appli sa ne fonctionne pas. Je devrais recevoir une notification si l'application est fermée trop
  • U peut ajouter le manifeste ainsi
  • manifeste mis à jour aussi
  • Ok a l'air bon. Qu'entendez-vous si vous dites la "fermeture" de l'app? Forcer l'arrêt?
  • Désolé pour mon manque de connaissances sur les mobiles de la terminologie. Ce que je veux dire c'est si je redémarre mon téléphone, puis toutes les demandes seront fermés. par exemple, même si je n'ai pas ouvert facebook app, je vais encore recevoir des avis de facebook app
  • Je ne peux pas reproduire cela. Après je redémarre mon téléphone, je reçois encore des messages de mon application, même si je ne suis pas d'ouvrir l'application
  • même si j'ai effacer toutes les applications sans avoir à redémarrer. Il ne fonctionne pas pour moi. J'ai besoin de le garder ouvert ou exécuter en arrière-plan. Je suis à l'aide de la version d'android 4.4.4
  • Est-il un paramètre que je suis absent en firebase console
  • Lorsque l'application n'est pas en cours d'exécution (ou backgrounded), onMessageReceived ne sera pas appelé pour les notifications. Dans une telle situation, Android devrait afficher un système de notification (dans la barre en haut) lorsque la notification est en.
  • Si je tue application, aucune notification n'est l'affichage. Sot sûr de ce qui est la question
  • Je suis initialisé de la FCM, à MainActivity - onCreate. Logiquement penser que cette méthode sera appelée une fois que j'ouvre l'APPLICATION. Est-ce la question - lorsque l'application est fermée, sa ne fonctionne pas? Est-il possible que je peux appeler la FCM initialisation lorsque l'application est installée ou quelque chose comme ça.
  • Vous n'avez pas à initialiser la FCM, puisque vous ne l'utilisez pas les sujets
  • il sera appelé si il n'y a pas de notification clé dans le POSTE de charge utile
  • Pouvez-vous nous expliquer un peu plus. Je ne suis pas capable de le faire fonctionner encore si l'application est fermée
  • exact, c'est pourquoi j'ai dit "pour les notifications" 😉
  • ah. Mon mauvais. Parfois mes yeux saut d'un couple de mots..
  • j'ai également confrontés à la même problématique, mais c'est seulement lorsque je verrouille mon téléphone portable plus de 5 à 10 min, puis je ne reçois pas toutes les notifications, mais quand je le débloquer je obtenir instantanément de ces notifications n'importe app est ouvert ou pas. Avez-vous découvrez pourquoi ces problème qui se pose est de la FCM ?
  • Quelqu'un obtenir un correctif pour ce problème? Dans mon cas, ce problème se produit dans tous les dispositifs Android 5.1. Ne se passe pas dans des dispositifs 7.0 ci-dessus. Donno environ 6 même si. Si l'application est en arrière-plan, puis notification reçue, s'il est fermé complètement, puis reçoit rien.