94 votes

Aucun son de notification lors de l'envoi d'une notification depuis firebase sous Android

J'envoie une notification push de firebase à mon application Android. Mais lorsque mon application est en arrière-plan, la méthode firebase onMessageReceived n'est pas appelée. Au lieu de cela, firebase envoie une notification au système pour afficher la notification dans la barre d'état système. La notification apparaît dans la barre d'état système mais il n'y a pas de son pour la notification même si j'ai autorisé le son de notification pour mon application dans les paramètres du système.

ce que je peux faire pour jouer le son de notification lorsque la notification est reçue de firebase.

C'est ainsi que j'envoie une notification de firebase à mon application. Lien vers le blog .

Comment ajouter Firebase à votre application Android ?

1 votes

Veuillez vous référer à cette réponse ..

0 votes

Assurez-vous de vérifier les paramètres de notification pour cette application

0 votes

@Developine : Votre lien a disparu ! (developine.com/...)

119voto

Isj Points 1231

Dans les données utiles de la notification, il y a une clé sonore.

D'après la documentation officielle, son utilisation est la suivante :

Indique un son à jouer lorsque le périphérique reçoit une notification. Prend en charge la valeur par défaut ou le nom de fichier d'une ressource sonore incluse dans l'application. l'application. Les fichiers sonores doivent résider dans /res/raw/.

Eg :

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

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

Si vous voulez utiliser le son par défaut de l'appareil, vous devez utiliser : "sound": "default" .

Voir ce lien pour toutes les clés possibles dans les charges utiles : https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support

Pour ceux qui ne le savent pas, Firebase gère les notifications différemment lorsque l'application est en arrière-plan. Dans ce cas, la fonction onMessageReceived n'est pas appelée.

Lorsque votre application est en arrière-plan, Android dirige les notifications dans la barre d'état système. Si l'utilisateur appuie sur la notification, le lanceur d'applications par défaut. Cela inclut les messages qui contiennent à la fois notification et une charge utile de données. Dans ce cas, la notification est dans la barre d'état système de l'appareil, et les données utiles sont données sont livrées dans les extras de l'intention de votre lanceur d'activité.

27 votes

Si vous voulez utiliser le son par défaut de l'appareil, vous devez utiliser : "sound" : "default"

0 votes

@TranVo merci de m'avoir signalé que la valeur "default" joue le son par défaut de l'appareil, vous m'avez fait gagner beaucoup de temps !

0 votes

Dans la notification, j'obtiens une réponse pour laquelle l'écran redirige la touche si l'application est au premier plan et que l'on clique sur la notification, cela fonctionne bien si l'on clique sur la notification en arrière-plan, l'activité du lanceur s'ouvre surMessageReceived comment la gérer, s'il vous plaît aidez-moi pour les deux gestions en arrière-plan et en avant-plan.

30voto

Sameer Points 80

Essayez ceci

{
    "to" : "DEVICE-TOKEN",

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

@note pour le son de notification personnalisé:-> "sound" : "MyCustomeSound.wav"

3 votes

Alors, où mettez-vous ce fichier ? dans le raw ? dans les actifs ?

3 votes

Pas le dossier assets, créez un nouveau dossier sous res, appelez-le raw. Puis copiez et collez votre fichier wav ou mp3 dans ce dossier. @HamzehSoboh

1 votes

Je place le son dans /res/raw/my_sound.mp3 dans l'application Android puis j'appelle l'API avec "sound" : "mon_son.mp3". Cela ne fonctionne pas, seul le son par défaut est joué :( Quelqu'un comme moi ?

28voto

KongJing Points 269

adavaced options sélectionnez options avancées quand Écrire un message et choisissez le son activé choose activated

Voici ma solution

0 votes

@KongJing sous Android 8 et plus, il y a toujours du son quel que soit le réglage de la console Firebase. Connaissez-vous un moyen d'empêcher complètement le son ?

0 votes

Je suis désolé de voir cela si tard, je ne peux pas résoudre ce problème.@Think Twice Code Once

13voto

RKN Points 3722

Le site onMessageReceived est déclenchée uniquement lorsque l'application est au premier plan ou que la charge utile de la notification ne contient que le type de données.

De la Documentation sur Firebase

Pour la messagerie en aval, le FCM fournit deux types de charge utile : notification et données .

Pour notification type, le FCM affiche automatiquement le message aux aux appareils des utilisateurs finaux au nom de l'application cliente. Les notifications ont un ensemble prédéfini de touches visibles par l'utilisateur.
Pour données l'application cliente est responsable du traitement des messages de données. Les messages de données ne comportent que des paires clé-valeur personnalisées.

Utiliser les notifications quand vous voulez FCM pour gérer affichant une notification pour le compte de votre application cliente. Utiliser les données messages lorsque vous voulez votre pour gérer l'affichage ou le traitement des messages sur votre application client Android, ou si vous voulez envoyer des messages à des appareils iOS lorsqu'il existe une connexion directe avec le FCM.

Plus loin, le docs

Comportement de l'application lors de la réception de messages contenant à la fois des notifications de notification et de données dépend du fait que l'application soit en arrière-plan ou au premier plan. ou au premier plan, c'est-à-dire qu'elle est active ou non au moment de la réception. réception.
En arrière-plan les applications reçoivent les données utiles de la notification dans la zone de notification, et ne traitent les données utiles que lorsque l l'utilisateur appuie sur la notification.
Lorsqu'il est au premier plan votre application reçoit un objet message avec les deux charges utiles disponibles.

Si vous utilisez la console firebase pour envoyer des notifications, la charge utile contiendra toujours le type de notification. Vous devez utiliser l'API Firebase pour envoyer la notification avec uniquement le type de données dans la charge utile de la notification. De cette façon, votre application est toujours avertie de la réception d'une nouvelle notification et l'application peut gérer les données utiles de la notification.

Si vous voulez faire jouer le son de la notification lorsque l'application est en arrière-plan en utilisant la méthode conventionnelle, vous devez ajouter le paramètre du son à la charge utile de la notification.

0 votes

Non, il est également appelé lorsque l'application est fermée, mais vous devez autoriser le démarrage automatique de l'application.

2voto

AAA Points 267

Faites comme ceci

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    //codes..,.,,

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

}

6 votes

OnMessageReceived n'est pas appelé lorsque l'application est en arrière-plan. en fait, c'est le problème auquel je suis confronté.

0 votes

Avez-vous appelé ceci (Firebase.setAndroidContext(getApplicationContext()) ; ) depuis l'activité principale ?

0 votes

Non je ne l'ai pas fait. mais maintenant je joue la réponse de notification d'isl a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X