Выберите собственный звук для локальных уведомлений
Как изменить звук, который воспроизводится для локальных уведомлений? Я использую следующий код для воспроизведения звука по умолчанию:
notif.soundName = UILocalNotificationDefaultSoundName;
Итак, я попробовал это ниже, и это не сработало. Что мне делать? Спасибо за вашу помощь!
notif.soundName = @"sound.caf";
Ответы
Ответ 1
Это должно сработать. Убедитесь, что звук на самом деле находится в вашем пакете приложений, находится в правильном формате (линейный PCM или IMA4 - почти везде, где объясняется, как конвертировать звуки для iOS расскажет вам, как это сделать) и составляет менее 30 секунд.
Ответ 2
Вы можете конвертировать из wav и mp3, используя:
afconvert -f caff -d [email protected] -c 1 in.wav out.caf
Ответ 3
Я также попытался преобразовать mp3 в caf, используя следующую команду:
afconvert clockalarm.mp3 clockalarm.caf -d ima4 -f caff -v
Один урок здесь. Я провел несколько часов, чтобы бороться со звуком локального уведомления. Пробовал конвертировать с различными битрейтом и форматом. Но, наконец, я обнаружил, что должен быть дефект с эмулятором iOS 6.1. Я развернул код на устройство, он работает хорошо, но на эмуляторе нет звука.
Ответ 4
Я столкнулся со всеми этими проблемами (спасибо за ответы) и смог решить проблему, перейдя с .wav на .caf(симулятор sans 6.1). Последний бит, который мне нужен, это убедиться, что .caf был в моем приложении. Чтобы подтвердить/исправить это...
Щелкните правой кнопкой мыши файл в "Навигаторе проектов", выберите "Показать инспектора файлов" и убедитесь, что у файла есть галочка рядом с вашим проектом в области "Целевое членство". В моем случае "LocalNotificationExampleTests" был единственным проверенным элементом. Проверка "LocalNotificationExample" зафиксировала мой недостаток звука на устройстве.
Ответ 5
Для Swift 3 используйте UNNotificationSound.init для объекта notif в функции планирования уведомлений.
Вот пример Swift 3:
func scheduleNotifications(inSeconds: TimeInterval, completion: @escaping (_ Success: Bool) ->()){
...
notif.sound = UNNotificationSound.init(named: "CustomSound.mp3")
...
}
Заключительная записка, согласно Apple: "Звуковой файл должен содержаться в комплекте приложений или в папке" Библиотека/Звуки "в контейнере данных приложения. Если файлы существуют в обоих местах, тогда файл в ~/Library/Sounds будет предпочтительнее".