94 votes

Notification de messagerie en nuage Firebase non reçue par le périphérique

Je rencontre un problème avec FireBase Messagerie en Nuage dans lequel j'ai récupérer le Jeton de l'appareil et envoyer la notification de test par le biais de Google Firebase console de notification cependant, la notification n'est jamais connecté, ni poussé à l'android virtual device. La documentation pour la FCM est presque exactement le code que j'ai ci-dessous et, à peu de chose dans la façon de ce que vous avez à faire pour obtenir les notifications push de travail avec firebase. Je suis passé par toutes les informations de configuration (construire.gradle ajouts, de l'Installation de google play services, etc...), comme spécifié dans la documentation, mais n'ont pas encore de messages génération. Je reçois une erreur immédiatement après avoir poussé la notification qui indique "e/FA: Tag Manager n'est pas trouvé et ne seront donc pas être utilisées", mais c'est la seule donnée qui est sortie et je n'ai rien trouvé liées à la gestion des tags des exigences et de la FCM sur les googles. Quel est le problème avec le code que je ne suis pas à recevoir mes notifications push pour le logcat ou de l'appareil? S'il vous plaît laissez-moi savoir toute autre information qui pourrait être utile. Merci.

NotificationGenie.java

public class NotificationGenie extends FirebaseMessagingService {

private static final String TAG = "Firebase_MSG";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
    sendNotification(remoteMessage.getNotification().getBody());
    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
}

private void sendNotification(String messageBody) {
    Intent intent = new Intent(this, PostLoginActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.tf2spyprofile)
            .setContentTitle("FCM Message")
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.test.movile_android">

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".LoginActivity"
        android:label="@string/title_activity_login">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DashBoardActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>

    <activity
        android:name=".NewOrderActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>

    <activity
        android:name=".PostLoginActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
</application>

<service
    android:name=".NotificationGenie">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

80voto

Html Tosin Points 120

"Vous devez également vous rappeler que pour recevoir les messages envoyés depuis la console Firebase, l'application doit être en arrière-plan, non démarrée ni masquée." --- D'après le commentaire de @Laurent Russier.

Je n'ai jamais reçu de message de Firebase, jusqu'à ce que je mette mon application en arrière-plan.

Ceci est vrai uniquement sur une connexion USB pour émulateur, vous recevez également une notification au premier plan

60voto

Tristan Richard Points 1050

Vous avez placé votre service en dehors de la balise d'application. Changer le fond à cela.

 <service
    android:name=".NotificationGenie">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

</application>
 

47voto

Hoby Points 3

J'ai eu le même problème et il est résolu en définissant activé, exporté vers true dans mon service

   <service
            android:name=".MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
 

14voto

Nikhil Setty Points 126

Appelez super.OnMessageReceived() dans la méthode Overriden. Cela a fonctionné pour moi! Finalement!

10voto

Juan Pablo Points 997

J'ai fait face à la même question de Firebase messagerie en nuage n'est pas reçue par l'appareil.

Dans mon cas, nom du package définie sur Firebase Console Projet a été diferent que celui défini sur le Manifeste Et Gradle de mon Projet Android.

En conséquence, j'ai reçu un jeton correctement mais pas de messages à tous.

À l'est, il est obligatoire que Firebase Console nom du package et le Manifeste Et Gradle matchs.

Vous devez également garder à l'esprit que pour recevoir les Messages envoyés à partir de Firebase de la Console, l'Application est en arrière-plan, pas commencé ni caché.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X