Пользовательское звуковое уведомление пользователя iOS 11
У меня проблемы с реализацией базового примера кода от Apple, в следующем
Это мой код; это очень "пример из учебника". В настоящее время я получаю сообщение об ошибке "init(named:)'недоступен"
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey:"testreminder!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey:"Reminder body.", arguments: nil)
content.sound = UNNotificationSound(named: "test.aiff");
content.categoryIdentifier = "myCategory"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "test.aiff", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
РЕДАКТИРОВАТЬ: при попытке предложения, это код, и он не работает. Это дает 'init(named:)' недоступно
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey:"testreminder!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey:"Reminder body.", arguments: nil)
content.sound = UNNotificationSound.init(named: "test.aiff")
content.categoryIdentifier = "myCategory"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "test.aiff", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
1 ответ
- Используйте структуру UNNotificationSoundName, чтобы определить имя звука.
https://developer.apple.com/documentation/usernotifications/unnotificationsoundname
let soundName = UNNotificationSoundName("test.aiff")
content.sound = UNNotificationSound(named: soundName)
- И убедитесь, что для звукового файла в инспекторе файлов установлен флажок " Целевое членство". Скриншот файлового инспектора
Попробуйте следующее решение, это может решить вашу проблему,
+ Изменить
content.sound = UNNotificationSound(named: "test.aiff");
к
notificationContent.sound = UNNotificationSound.init(named: "test.aiff")
// Получить audioUrl и проверить состояние
if let audioUrl == nil {
content.sound = UNNotificationSound.defaultSound()
} else {
let alertSound = NSURL(fileURLWithPath: self.selectedAudioFilePath)
content.sound = UNNotificationSound(named: alertSound.lastPathComponent!)
}
У нас было несколько целей, если аудиофайл был добавлен только к 1 цели. чем в основном, чтобы добавить его ко всем нашим целям.
Apple говорит это;
Чтобы использовать предпочтительный звуковой сигнал пользователя, используйте метод default() для создания звукового объекта. Чтобы указать собственный звук, используйте метод init(named:). Файлы для пользовательских звуков должны находиться в основном комплекте вашего исполняемого файла или в каталоге Library/Sounds каталога каталога вашего приложения. Пользовательские звуки оповещения воспроизводятся системой звукового оборудования, поэтому они должны быть в одном из следующих форматов аудиоданных: Линейный PCM MA4 (IMA/ADPCM) µLaw aLaw Вы можете упаковать аудиоданные в файл aiff, wav или caf. Звуковые файлы должны быть менее 30 секунд. Если продолжительность звукового файла превышает 30 секунд, система воспроизводит звук по умолчанию