Push-уведомления - звук не работает?
-
06-07-2019 - |
Вопрос
У меня есть приложение для iPhone, над которым я работаю и которое использует Push-уведомления.
В полезной нагрузке я указываю несколько вещей:
- текст сообщения
- звук
- action-loc-key, потому что я не хочу, чтобы пользователь мог запускать приложение из уведомления
Уведомление отлично доходит до моего iPhone.Он показывает сообщение без кнопок.Таким образом, body и action-loc-key работают просто отлично.Но он не воспроизводит никакого звука.
Однако есть пара вещей, которые я заметил во время устранения неполадок:
- если я реализую application:didReceiveRemoteNotification, все выглядит нормально.Аргумент Dictionary содержит ключ для звука, значением которого действительно является имя файла, который я хочу воспроизвести.
- Сам звуковой файл "работает", потому что, если я воспроизвожу его внутри приложения (используя класс SoundEffect из примера BubbleLevel), он работает просто отлично.
Несмотря на эти два факта, звуковой эффект просто не воспроизводится.
В приложении "Настройки" все выглядит правильно - Push включен для моего приложения, и у меня также включены как "звуки", так и "оповещения".
Центр документации iPhone предлагает использовать Quicktime для просмотра формата файла.Вот как это выглядит.
Наконец, если я посмотрю на информацию об этом файле в XCode, там будет указано, что тип файла - это просто значение по умолчанию "file". Насколько я могу судить, в списке нет опции audio-caf.Я попробовал audio-WAV (звукорежиссер сказал мне, что исходные файлы были WAV), но это ничего не изменило.
Кроме того, код:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// view controller set up stuff
// ...
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
}
Решение
Я должен был также опубликовать JSON, но оказалось, что я сконструировал его неправильно.Причина, по которой это сработало в уведомлении didReceieveRemote, заключается в том, что я сам разбирал JSON, и тот факт, что у меня что-то вышло из строя, не имел значения.