web-dev-qa-db-fra.com

Pas de son personnalisé avec Android Firebase Notification

J'utilise les notifications Firebase Push dans mon application Android. Je peux envoyer correctement une notification avec une icône personnalisée, mais je n'ai pas réussi à jouer mon son personnalisé. Je reçois toujours le son par défaut de mon appareil. 

{
    "registration_ids": "myToken",
    "notification": {
        "body": "my body",
        "title": "my title",
        "icon": "ic_notification",
        "sound": "mysound.mp3" // I tried "mysound", "mysound.wav"...

    },
    "priority": "high"

}

Le son personnalisé est situé dans/res/raw

J'ai pu jouer mon son personnalisé avec les messages onMessageReceived et Firebase mais pas avec le message de notification Firebase .

Mon appareil Android est Xiaomi Mi A1 et Oreo 8.1., Également essayé avec Xiaomi Mi A2 avec le même résultat.

J'ai essayé avec php et curl, avec node.js ... toujours le même problème, j'ai mon son par défaut.

METTRE À JOUR

Avec ce code pour node.js ne fonctionne pas non plus: 

var registrationToken = 'xxxxxx';

var message = {

    notification: {
      title: 'my title',
      body: 'my body',
    },
    Android: {
      ttl: 3600 * 1000,
      notification: {
        color: '#ff0000',
        sound: 'mysound.mp3'
      }
    }, 
    token: registrationToken

};
7
kurtko

Finalement j'ai trouvé la solution. Pour Android 8.0 et versions ultérieures, il est nécessaire de créer un canal de notification dans votre application:

NotificationChannel channel = new NotificationChannel('my_id', name, importance);

(plus d'infos: https://developer.Android.com/training/notify-user/channels#Java )

Ensuite, lorsque vous envoyez la notification:

var registrationToken = 'xxxxxx';

var message = {

    notification: {
      title: 'my title',
      body: 'my body',
    },
    Android: {
      ttl: 3600 * 1000,
      notification: {
        color: '#ff0000',
        sound: 'mysound.mp3',
        channel_id: 'my_id' // important to get custom sound
      }
    }, 
    token: registrationToken

};

0
kurtko

Dans la documentation , incluez le son dans l'objet de notification sous l'objet Android. Donnez le nom du fichier son en valeur sonore. Les fichiers audio doivent résider dans / res/raw/. Voici un exemple de Node.js: -

  var message = {
  notification: {
    title: 'sample title',
    body: 'Hello, its Tuesday.',
  },
  Android: {
    ttl: 3600 * 1000,
    notification: {
      icon: 'my_icon',
      color: '#f45342',
      sound: 'filename.mp3',
    },
  },
  apns: {
    payload: {
      aps: {
        badge: 42,
      },
    },
  },
  topic: 'industry-tech'
};
1
Nainal

Essayez d'activer le son à partir de la console Firebase

Pour plus d'informations, regardez cette réponse

https://stackoverflow.com/a/44304089/9024123

peut-être que cela devrait être un problème et essayez également de supprimer «.mp3» dans l'élément sonore 

"sound":"mySound"
0
Rohit Chauhan

je faisais également face au même problème. J'ai toujours eu le son par défaut mais je l'ai corrigé comme suit. J'utilise FCM-Push (module de noeud) https://www.npmjs.com/package/fcm-Push

var message = {  
to : device_token,
collapse_key : '<insert-collapse-key>',
// data : {
//     '<random-data-key1>' : '<random-data-value1>',
//     '<random-data-key2>' : '<random-data-value2>'
// },
notification : {
    title : 'Title ',
    body : 'some Body',
    sound : 'notification' // my .ogg file in /res/raw
},
Android: {
sound: 'notification' // my .ogg file name in /res/raw
}
};

Je n'ai pas essayé avec mp3 ou wav et dans votre question, il semble que vous n'ayez pas essayé avec le fichier .ogg (bien que je doute que cela ait un rapport avec le format audio mais vous pouvez essayer)

0
fist ace