Нет специального звука с Android Firebase Notification - PullRequest
0 голосов
/ 22 октября 2018

Я использую push-уведомления Firebase в своем приложении для Android.Я могу правильно отправить уведомление с пользовательским значком, но мне не удалось воспроизвести мой собственный звук.Я всегда получаю звук по умолчанию на моем устройстве.

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

    },
    "priority": "high"

}

Пользовательский звук находится в / res / raw

Мне удалось воспроизвести свой пользовательский звук с onMessageReceived и сообщением данных Firebase , но не с уведомлением Firebaseсообщение .

Моим устройством Android являются Xiaomi Mi A1 и Oreo 8.1., также пытались с Xiaomi Mi A2 с тем же результатом.

Я пытался с php и curl, с node.js... всегда та же проблема, я получаю звук по умолчанию.

ОБНОВЛЕНИЕ

С этим кодом для node.js также не работает:

var registrationToken = 'xxxxxx';

var message = {

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

};

Ответы [ 5 ]

0 голосов
/ 05 июня 2019

Может быть, это помогает: в моем случае я пытался с вышеупомянутым подходом, и он не работал, всякий раз, когда я проверял в onMessageReceived (для целей отладки) идентификатор канала

Log.e(TAG, "Message Notification channel id: " + remoteMessage.getNotification().getChannelId()); 

, который я всегда получал 'ноль'.

Итак, читая документацию отсюда https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support

Я обнаружил, что использовал неверный ключ для идентификатора канала в json.

Вместоключ 'channel_id' попытайтесь использовать ключ 'android_channel_id', подобный этому

"notification": {
        "body": "Body of Your Notification",
        "title": "Title of Your Notification",
        "android_channel_id": "channelId",
        "icon": "myIcon"
    }

Если я использую его таким образом, он работает, как ожидалось, пользовательский звук (из res / raw) воспроизводится

PS: в моем случае я установил свой звук на channelId, когда я его создал

Удачи!

0 голосов
/ 22 января 2019

Наконец я нашел решение.Для Android 8.0 и выше необходимо создать канал уведомлений в вашем приложении:

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

(подробнее: https://developer.android.com/training/notify-user/channels#java)

Затем при отправке уведомления:

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 голосов
/ 30 октября 2018

Из документации включите звук в объект уведомления под объектом android.Дайте название звукового файла в звуковом значении.Звуковые файлы должны находиться в / res / raw / .Ниже приведен пример 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'
};
0 голосов
/ 10 января 2019

Я тоже столкнулся с той же проблемой.Я всегда получал звук по умолчанию, но я исправил его следующим образом.Я использую FCM-push (узел модуля) 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
}
};

Я не пробовал его с mp3 или wav, и в вашем вопросе кажется, что вы не пробовали с файлом .ogg (хотя я сомневаюсь, еслиэто имеет отношение к аудиоформату, но вы можете попробовать)

0 голосов
/ 30 октября 2018

Попробуйте включить звук из консоли Firebase

Для получения дополнительной информации просто посмотрите на этот ответ

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

может быть, это должно быть проблемойа также попробуйте удалить «.mp3» из звукового элемента и сделать его похожим на

"sound":"mySound"
...