Metodo onMessageReceived in FirebaseMessagingService non viene chiamato

voti
0

Sto inviando la notifica utilizzando una funzione nuvola Firebase. Quando sto inviando il payload con chiave di notifica, notifica manda ma metodo non invocato. Ma con la chiave di dati, non è successo niente.

Qui è il mio codice per FirebaseMessagingService

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {


        Log.d(TAG, From:  + remoteMessage.getFrom());

        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, Message data payload:  + remoteMessage.getData());

            sendNotification(remoteMessage.getData().get(title), remoteMessage.getData().get(body));


            if (/* Check if data needs to be processed by long running job */ true) {
                // For long-running tasks (10 seconds or more) use Firebase Job Dispatcher.
                scheduleJob();
            } else {
                // Handle message within 10 seconds
                handleNow();
            }

        }

        // Check if message contains a notification payload.
        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, Message Notification Body:  + remoteMessage.getNotification().getBody());
            sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
        }

    }

    private void sendNotification(String title, String messageBody){

        String channelId = getString(R.string.default_notification_channel_id);

        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, channelId)
                        .setSmallIcon(R.drawable.ic_logo)
                        .setContentTitle(title)
                        .setContentText(messageBody)
                        .setAutoCancel(true)
                        .setSound(defaultSoundUri)
                        .setContentIntent(pendingIntent);

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

        // Since android Oreo notification channel is needed.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel(channelId,
                    Channel human readable title,
                    NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);
        }

        notificationManager.notify(0 , notificationBuilder.build());

    }

Qui è la mia funzione Firebase nuvola

exports.sendNotification = functions.database
  .ref(/deals/{userId}/{dealId})
  .onCreate((data, context) => {
    const dataValue = data.val();

    const topic = context.params.userId;

    const payload = {
      data: {
        title: New deal created,
        body: dataValue.user.name +  added a new deal.
      },
      topic: topic
    };

    // Send a message to devices subscribed to the provided topic.
    return admin
      .messaging()
      .send(payload)
      .then(response => {
        // Response is a message ID string.
        console.log(Successfully sent message:, response);
      })
      .catch(error => {
        console.log(Error sending message:, error);
      });
  });

Inoltre ho creato un debugpoint su onMessageReceived (), ma non ha ottenuto infornato in su.

È pubblicato 10/10/2019 alle 00:43
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

Quando la vostra applicazione è in background, Firebase non si innescherà OnMessageReceived invece mostrerà un avviso di notifica

+

assicurarsi di aver sottoscritto l'argomento corretto

+

assicurarsi che i servizi di gioco vengono aggiornati sul dispositivo.

Risposto il 16/10/2019 a 15:58
fonte dall'utente

voti
0

Ho capito qual è il problema. Il problema è dopo aver fatto alcune modifiche e la costruzione del progetto Android abbiamo bisogno di sottoscrivere argomento nuovo.

Risposto il 16/10/2019 a 15:52
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more