0
votes

Popup un message lors de la réception du message dans FirebasemessagingService

J'ai une application Android. Dans ce cas, j'ai une utilisation en firebase pour les notifications push. J'ai besoin d'afficher un message contextué dans ma page d'accueil lors de la réception d'un message dans FirebasemessagingService Code> Classe

FirebasemessagingService strong> p>

 public BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getStringExtra("action");
        try {
            JSONObject mJsonObject = new JSONObject(intent.getExtras().getString("contentdata"));
            Log.d("hi...........",intent.getExtras().getString("contentdata"));
            Toast.makeText(getApplicationContext(),"hi",Toast.LENGTH_LONG).show();
            StartTrackingDriver();
        } catch (Exception e){

        }
    }
};

@Override
protected void onResume() {
    super.onResume();
    registerReceiver(myReceiver, new IntentFilter("com.driver.approverequest"));
}

@Override
protected void onPause() {
    super.onPause();
    try {
        unregisterReceiver(myReceiver);
    }catch (Exception e){}
}


1 commentaires

Vous devez envoyer uniquement la notification de type de données pour obtenir des appels dans votre inpesagereceived. Vérifiez cette réponse Stackoverflow.com/a/54787937/5335382 , puis déclencher une émission si l'activité de la maison est déjà ouverte d'ouverture d'ouverture .


3 Réponses :


0
votes

registre diffusée dans oncreate () code> xxx pré>

désinscripteur dans OnDestroy () code> p> xxx pré >

Unregister en Onpause désignera la diffusion chaque fois que votre activité va en arrière-plan. P>

strud> p>

Vous obtenez une "action" de l'intention mais ne mettez jamais la valeur à l'intention. p> xxx pré>

définissez la chaîne à l'intention d'abord. P>

LocalBroadcastManager.getInstance(context).registerReceiver(myReceiver, new IntentFilter("com.driver.approverequest"));

LocalBroadcastManager.getInstance(context).unregisterReceiver(myReceiver);

LocalBroadcastManager.getInstance(context).sendBroadcast(myIntent);


2 commentaires

Pour obtenir une "action" de l'intention, vous devez la définir d'abord dans l'intention.


Bt il ne reçoit pas d'appel à l'intérieur du vide public ONreceive (contexte de contexte, intention d'intention)



0
votes

@arya FCM a travaillé sur le concept suivant.

1 application est devant 2 app est en arrière-plan

1 Lorsque l'application est à l'avant, la méthode onreceive sera appelée chaque fois que votre charge utile JSON reçue du serveur

2 Lorsque votre application est en arrière-plan, la méthode onreceive sera appelée uniquement lorsque votre JSON ne contient pas de clé "Notification". Si votre charge utile contient la touche de notification, Firebase SDK va gérer tous.


0 commentaires

0
votes
String actiondata = remoteMessage.getData().get("action");
 if(actiondata.equals("booking")){
     Intent myIntent = new Intent("com.driver.approverequest");
     myIntent.putExtra("contentdata",contentdata);
     myIntent.putExtra("requestid",productId);
     LocalBroadcastManager.getInstance(this).sendBroadcast(myIntent);
     Log.d(TAG, "Message data : athira send " + message);
 }

//In your HomeActivity
@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
  BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){
  @Override
     public void onReceive(Context context, Intent intent) {
         String data = intent.getStringExtra("contentdata");
         String id = intent.getStringExtra("requestid");

 //Write your pop up message logic here
  }
     }

 @Override
 protected void onResume() {
 LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver,new IntentFilter("com.driver.approverequest"));
        super.onResume();
 }

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

0 commentaires