2017-08-22 2 views
0

Je vais essayer de montrer une seule notification personnelle sur mon plateau de téléphone, mais je ne peux pas riche, alors aide. Je rencontre un problème avec FireBase Cloud Messaging dans lequel j'obtiens le Token de l'appareil et envoie le test de notification via la console de notification Google Firebase, mais la notification n'est jamais enregistrée ni transmise au périphérique virtuel Android. La documentation pour FCM est presque exactement le code que j'ai ci-dessous et rien d'autre de ce que vous auriez à faire pour obtenir des notifications push fonctionnant avec Firebase. J'ai parcouru toutes les informations d'installation (build.gradle additions, Installation de google play services, etc ...) comme spécifié dans la documentation, mais je n'ai toujours pas de messages générant. Quel est le problème avec le code que je ne reçois pas mes notifications push sur le logcat ou l'appareil? S'il vous plaît laissez-moi savoir toute autre information qui serait utile. Merci.android firebase reg id recived mais notification ne pas afficher dans l'affichage du téléphone

mRegistrationBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) { 
            FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL); 

       displayFirebaseRegId(); 

      } else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) 
       { 
       String message = intent.getStringExtra("message"); 

       Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show(); 

       txtMessage.setText(message); 
      } 
     } 
    }; 

    displayFirebaseRegId(); 
} 

    private void displayFirebaseRegId() { 
    SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0); 
    String regId = pref.getString("regId", null); 

    Log.e(TAG, "Firebase reg id: " + regId); 

    if (!TextUtils.isEmpty(regId)) 
     txtRegId.setText("Firebase Reg Id: " + regId); 
    else 
     txtRegId.setText("Firebase Reg Id is not received yet!"); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, 
      new IntentFilter(Config.REGISTRATION_COMPLETE)); 
    LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, 
      new IntentFilter(Config.PUSH_NOTIFICATION)); 

    NotificationUtils.clearNotifications(getApplicationContext()); 
} 

@Override 
protected void onPause() { 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver); 
    super.onPause(); 
} 

Et je vais ajouter lib de messagerie de base de feu est:

compile 'com.google.firebase:firebase-messaging:11.0.4' 

Répondre

1

Vous n'êtes pas obligé de souscrire à l'intérieur du BroadcastReceiver vous pouvez simplement le faire dans la méthode onTokenRefresh dans le FirebaseInstanceIdService

Vous n'avez pas besoin d'obtenir la notification push dans le BroadcastReceiver, vous devez le faire à l'intérieur de la onMessageReceive dans le FirebaseMessagingService

FCM est extrêmement peu fiable avec les émulateurs, il suffit d'utiliser un vrai périphérique, j'ai lutté avec cela et dans certains cas je reçois même la notification jours plus tard lors de l'ouverture de l'émulateur pour d'autres projets