Domanda Nessun suono di notifica quando si invia la notifica da Firebase in Android


Sto inviando notifica push da Firebase alla mia applicazione Android. ma quando la mia app è in firebase in background, il metodo onMessageReceived non viene chiamato, invece Firebase invia una notifica al sistema per mostrare la notifica nella barra delle applicazioni. la notifica viene visualizzata nella barra delle applicazioni ma non viene emesso alcun suono per la notifica anche se sono stato autorizzato il suono di notifica per la mia app nelle impostazioni di sistema.

cosa posso fare per riprodurre il suono di notifica quando la notifica ricevuta da Firebase.

Ecco come invio la notifica da Firebase alla mia app Link blogpost.

Come aggiungere Firebase nella tua applicazione Android


44
2018-06-22 05:52


origine


risposte:


Nel carico utile della notifica della notifica c'è una chiave sonora.

Dalla documentazione ufficiale il suo uso è:

Indica un suono da riprodurre quando il dispositivo riceve una notifica.   Supporta il valore predefinito o il nome file di una risorsa audio in bundle in   app. I file audio devono risiedere in / res / raw /.

Per esempio:

{
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",

    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon",
      "sound" : "mySound"
    }
  }

Se si desidera utilizzare il suono predefinito del dispositivo, è necessario utilizzare: "sound": "default".

Vedi questo link per tutte le possibili chiavi nei payload: https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support

Per coloro che non conoscono le notifiche di handle di Firebase in modo diverso quando l'app è in background. In questo caso la funzione onMessageReceived non viene chiamata.

Quando la tua app è in background, Android indirizza la notifica   messaggi alla barra delle applicazioni. Un utente tocca la notifica apre il   Avvio applicazioni per impostazione predefinita. Ciò include i messaggi che contengono entrambi   notifica e carico utile dei dati. In questi casi, la notifica è   consegnato alla barra delle applicazioni del dispositivo e il carico utile dei dati è   consegnato negli extra dell'intento della tua attività di avvio.


70
2018-06-22 06:08



adavaced options selezionare opzioni avanzate quando Scrivi un messaggioe scegli il suono attivato choose activated

questa è la mia soluzione


18
2018-06-01 09:44



Il onMessageReceived il metodo viene attivato solo quando l'app è in primo piano o il carico utile della notifica contiene solo il tipo di dati.

Dal Documenti Firebase

Per la messaggistica downstream, FCM fornisce due tipi di payload:    notifica e dati.

Per notifica digitare, FCM visualizza automaticamente il messaggio su   dispositivi dell'utente finale per conto dell'app client. Le notifiche hanno un   set predefinito di chiavi visibili all'utente.
  Per dati tipo, l'app client è responsabile dell'elaborazione dei messaggi di dati. I messaggi di dati hanno solo coppie chiave-valore personalizzate.

Usa le notifiche quando vuoi FCM da gestire visualizzazione a   notifica per conto della tua cliente. Utilizzare i dati messaggi quando tu   voglio il tuo app da gestire la visualizzazione o elaborare i messaggi sul tuo   App client Android o se si desidera inviare messaggi a dispositivi iOS   quando c'è una connessione FCM diretta.

Più in basso docs

Comportamento delle app quando si ricevono messaggi che includono entrambe le notifiche   e i payload dei dati dipendono dal fatto che l'app sia in background o   il primo piano, in sostanza, indipendentemente dal fatto che sia attivo o meno al momento di   ricevuta.
Quando in background, le app ricevono il carico utile della notifica   nella barra delle notifiche e gestire solo il payload dei dati quando   l'utente tocca la notifica.
Quando in primo piano, la tua app riceve un oggetto messaggio con entrambi i payload disponibili.

Se si sta utilizzando la console Firebase per inviare notifiche, il payload conterrà sempre il tipo di notifica. Devi utilizzare l'API Firebase per inviare la notifica solo con il tipo di dati nel carico utile della notifica. In questo modo la tua app viene sempre avvisata quando viene ricevuta una nuova notifica e l'app può gestire il carico utile della notifica.

Se si desidera riprodurre il suono di notifica quando l'app è in background utilizzando il metodo convenzionale, è necessario aggiungi il parametro audio al carico utile della notifica.


6
2018-06-22 06:14



Puoi questo

{
    "to" : "DEVICE-TOKEN",

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

@note per il suono di notifica personalizzato: -> "sound" : "MyCustomeSound.wav"


5
2017-10-27 20:31



fai così

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    //codes..,.,,

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

}

3
2018-06-22 06:08



Sono in grado di riprodurre il suono di notifica anche se lo invio dalla console di Firebase. Per farlo basta aggiungere il tasto "suono" con valore "default" in opzione anticipata.


0
2018-01-27 16:34



prova questo....

  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());
    }

e in onMessageReceived, chiamalo

 @Override
public void onMessageReceived(RemoteMessage remoteMessage) {


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

    buildPushNotification(/*your param*/);
}

o seguire KongJing, È anche corretto come lui dice, ma puoi usare una Console Firebase.


0
2017-08-08 18:35



Con l'API HTTP v1 è diverso

Documentazione

Esempio:

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

0
2018-04-19 22:13