Пользовательское звуковое уведомление пользователя iOS 11

У меня проблемы с реализацией базового примера кода от Apple, в следующем

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SchedulingandHandlingLocalNotifications.html

Это мой код; это очень "пример из учебника". В настоящее время я получаю сообщение об ошибке "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 ответ

  1. Используйте структуру UNNotificationSoundName, чтобы определить имя звука.

https://developer.apple.com/documentation/usernotifications/unnotificationsoundname

let soundName = UNNotificationSoundName("test.aiff")
content.sound = UNNotificationSound(named: soundName)
  1. И убедитесь, что для звукового файла в инспекторе файлов установлен флажок " Целевое членство". Скриншот файлового инспектора

Попробуйте следующее решение, это может решить вашу проблему,

+ Изменить

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 секунд, система воспроизводит звук по умолчанию

Другие вопросы по тегам