Пользовательское звуковое push-уведомление не работает (Flutter) - PullRequest
0 голосов
/ 02 января 2019
{
  "to": "XXXX",
  "notification": {
    "title": "ASAP Alert",
    "body": "Please open your app"
  },
  "data": {
    "screen": "/Nexpage1",
    "sound": "alarm",
    "click_action": "FLUTTER_NOTIFICATION_CLICK"
  }
}

Выше моя полезная нагрузка для push-уведомления.Я вставил файл alarm.mp3 в папку raw, однако он по-прежнему не дает мне звука будильника, у меня есть попытка для alarm.mp3 также, что-то не так с json?из-за кода в моем файле дротика?

here's the mp3 file inside the raw file

1 Ответ

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

Чтение это кажется, что им нужно управлять автоматически (если вы не использовали компоновщик уведомлений ) на Android, но вы также должны указать расширение .mp3 и положить его в notification поле, а не data один ..

"sound": "alarm.mp3"

iOS ведет себя очень по-разному под капотом, но вы можете использовать собственный звук, установив поле sound: также в уведомлении. В любом случае .mp3 не является допустимым форматом файла уведомлений APN, и вам необходимо указать также расширение файла.

"sound": "filename.caf"

Следуйте документации Apple , чтобы создать собственный звуковой файл для вашего приложения.

mp3 не является допустимым форматом

Подготовка пользовательских звуковых сигналов

Локальные и удаленные уведомления могут указывать настраиваемые звуки воспроизводится при доставке уведомления. Вы можете упаковать аудио данные в формате aiff, wav или caf. Потому что они играют Система звукового сопровождения, пользовательские звуки должны быть в одном из следующих форматы аудиоданных:

  • Linear PCM

  • MA4 (IMA/ADPCM)

  • µLaw

  • aLaw

Поместите пользовательские звуковые файлы в app bundle или в Library/Sounds папка каталога вашего приложения. изготовленный на заказ звуки должны быть менее 30 секунд при воспроизведении. Если пользовательский звук сверх этого предела вместо этого воспроизводится системный звук по умолчанию.

Вы можете использовать инструмент afconvert для преобразования звуков. Например, чтобы преобразовать 16-битный линейный системный звук PCM Submarine.aiff в IMA4 аудио в CAF file, используйте следующую команду в приложении «Терминал»:

afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v

Чтобы exampole преобразовал ваш mp3 файл в caf файл, вы можете напечатать в терминале:

afconvert -f caff -d LEI16 alarm.mp3 alarm.caf

Прочтите это doc , чтобы получить глубокое представление обо всех общих и специальных полях полезных данных уведомлений.

UPDATE

Я протестировал Android-часть и могу подтвердить, что, поместив файл .mp3 в папку res/raw/, звук воспроизводится так, как задокументировано и ожидается.

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

{
 "to" : "my_device_token",
 "collapse_key" : "type_a",
 "priority" : "high",
 "notification" : {
     "body" : "Test Notification body for custom sound {{datestamp}}",
     "title": "Custom sound alert.mp3",
     "sound": "alert.mp3"
 }
}

enter image description here

Я также протестировал версию iOS после преобразования файла .mp3 в файл .caf таким образом:

afconvert -f caff -d LEI16 alert.mp3 alert.caf

та же json полезная нагрузка с другим именем файла работает:

{
 "to" : "my_device_token",
 "collapse_key" : "type_a",
 "priority" : "high",
 "notification" : {
     "body" : "Test Notification body for custom sound {{datestamp}}",
     "title": "Custom sound alert.mp3",
     "sound": "alert.caf"
 }
}

Не забудьте добавить файл в ваш main bundle.

enter image description here

Это работает, если приложение закрывается или работает в фоновом режиме.

Если вы хотите показать предупреждение и воспроизвести звук, когда приложение находится на переднем плане, вы должны управлять им на onMessage событии, как кто-то уже сказал вам здесь , или вы можете использовать platform-channel здесь, чтобы создать собственное уведомление с Notification.Builder на Android и UNNotificationCenter на iOS (например).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...