push-notification push - Kein Benachrichtigungston beim Senden einer Benachrichtigung von Firebase in Android





messaging gradle (8)


Wählen Sie erweiterte Optionen, wenn Sie eine Nachricht schreiben und Sound aktivieren möchten

Das ist meine Lösung

Ich sende eine Push-Benachrichtigung von Firebase an meine Android-Anwendung. Aber wenn meine App im Hintergrund ist, wird die Firebase onMessageReceived-Methode nicht aufgerufen, stattdessen sendet Firebase Benachrichtigungen an das System, um die Benachrichtigung in der Taskleiste anzuzeigen. Benachrichtigung erscheint in der Taskleiste, aber kein Ton für die Benachrichtigung, auch wenn ich den Benachrichtigungston für meine App in den Systemeinstellungen zugelassen habe.

Was kann ich tun, um Benachrichtigungston zu hören, wenn die Benachrichtigung von der Firebase empfangen wird?

So sende ich eine Benachrichtigung von Firebase an den Blogpost-Link meiner App.

So fügen Sie Firebase in Ihrer Android-Anwendung hinzu




Die onMessageReceived Methode wird nur ausgelöst, wenn sich die onMessageReceived im Vordergrund befindet oder die Benachrichtigungsnutzdaten nur den Datentyp enthalten.

Aus den Firebase-Dokumenten

Für Downstream Messaging bietet FCM zwei Arten von Payload: Benachrichtigung und Daten .

Bei Benachrichtigungstyp zeigt FCM die Nachricht im Namen der Client-App automatisch an Endbenutzergeräte an. Benachrichtigungen verfügen über vordefinierte Benutzerschlüssel.
Für den Datentyp ist die Client-App für die Verarbeitung von Datennachrichten zuständig. Datennachrichten haben nur benutzerdefinierte Schlüssel / Wert-Paare.

Verwenden Sie Benachrichtigungen, wenn FCM die Benachrichtigung im Namen Ihrer Client-App anzeigen soll. Verwenden Sie Datennachrichten, wenn Ihre App die Anzeige verarbeiten oder die Nachrichten in Ihrer Android-Client-App verarbeiten oder wenn Sie bei einer direkten FCM-Verbindung Nachrichten an iOS-Geräte senden möchten.

Weiter unten in der docs

Das Verhalten der App beim Empfang von Nachrichten, die sowohl Benachrichtigungs- als auch Datennutzlasten enthalten, hängt davon ab, ob sich die App im Hintergrund oder im Vordergrund befindet - im Wesentlichen, ob sie zum Zeitpunkt des Empfangs aktiv ist oder nicht.
Im Hintergrund empfangen Apps die Benachrichtigungs-Payload in der Benachrichtigungsleiste und behandeln nur die Datennutzlast, wenn der Benutzer auf die Benachrichtigung klickt.
Im Vordergrund erhält Ihre App ein Nachrichtenobjekt mit beiden verfügbaren Nutzdaten.

Wenn Sie die Firebase-Konsole zum Senden von Benachrichtigungen verwenden, enthält die Nutzlast immer den Benachrichtigungstyp. Sie müssen die Firebase-API verwenden, um die Benachrichtigung nur mit dem Datentyp in der Benachrichtigungsnutzlast zu senden. Auf diese Weise wird Ihre App immer benachrichtigt, wenn eine neue Benachrichtigung empfangen wird und die App die Benachrichtigungsnutzlast verarbeiten kann.

Wenn Sie einen Benachrichtigungston wiedergeben möchten, wenn sich die App im Hintergrund befindet und die herkömmliche Methode verwendet, müssen https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support zur Benachrichtigungsnutzlast https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support .




Versuche dies....

  public  void buildPushNotification(Context ctx, String content, int icon, CharSequence text, boolean silent) {
    Intent intent = new Intent(ctx, Activity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 1410, intent, PendingIntent.FLAG_ONE_SHOT);

    Bitmap bm = BitmapFactory.decodeResource(ctx.getResources(), //large drawable);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(ctx)
            .setSmallIcon(icon)
            .setLargeIcon(bm)
            .setContentTitle(content)
            .setContentText(text)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent);

    if(!silent)
       notificationBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

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

        notificationManager.notify(1410, notificationBuilder.build());
    }

und in onMessageReceived, rufen Sie es auf

 @Override
public void onMessageReceived(RemoteMessage remoteMessage) {


    Log.d("Msg", "Message received [" + remoteMessage.getNotification().getBody() + "]");

    buildPushNotification(/*your param*/);
}

oder folgen Sie , ist auch korrekt, wie er sagt, aber Sie können eine Firebase-Konsole verwenden.




Ich kann Benachrichtigungston auch dann abspielen, wenn ich ihn von der Firebase-Konsole aus sende. Um dies zu tun, müssen Sie nur Schlüssel "Sound" mit Wert "Standard" im Voraus Option hinzufügen.




Mit HTTP v1 API ist es anders

Documentation

Beispiel:

{
 "message":{
    "topic":"news",
    "notification":{
       "body":"Very good news",
       "title":"Good news"
    },
    "android":{
       "notification":{
          "body":"Very good news",
          "title":"Good news",
          "sound":"default"
       }
    }
  }
}



Du kannst das

{
    "to" : "DEVICE-TOKEN",

    "notification" : {
      "body"  : "NOTIFICATION BODY",
      "title" : "NOTIFICATION TITILE",
      "sound" : "default"
    }
  }

@note für benutzerdefinierte Benachrichtigung Sound: -> "sound" : "MyCustomeSound.wav"




mach das so

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    //codes..,.,,

    Uri sound= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        builder.setSound(sound);

}



Es wird verwendet, um den Inhalt der angegebenen ListView zu filtern. Wenn Sie einen Buchstaben eingeben, werden Sie automatisch zu diesem Eintrag gescrollt, wenn er in dieser Ansicht vorhanden ist.





android push-notification notifications firebase firebase-cloud-messaging