Получить имя звука UNNotificationRequest из запроса

Я настроил уведомление с пользовательским звуком, например:

var soundNames = ["Default", "Alert1", "Alert2", "Alert3", "Alert4", "Alert5", "Alert6", "Alert7", "Alert8", "Alert9", "Alert10"]

func addNotification(title: String, timeInt: TimeInterval, image: Data?, soundName: String?) {

let content = UNMutableNotificationContent()
content.title = title

    content.sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: "\(soundName!).caf"))

    var trigger: UNTimeIntervalNotificationTrigger

    trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInt, repeats: true)

// choose a random identifier
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

// add our notification request
UNUserNotificationCenter.current().add(request)

saveConceptCard(id: request.identifier, title: title, image: image)

}

Теперь я хочу получить имя пользовательского звука, который я использовал, когда я извлекаю конкретный запрос уведомления из его идентификатора.

 var notification: UNNotificationRequest

Я пытаюсь получить имя звука так:

 let sound = notification.content.sound!.debugDescription

Но это возвращает:

 <UNNotificationSound: 0x2822419d0>

Есть ли способ получить имя файла из этого кода?


person Peter Ruppert    schedule 28.10.2020    source источник
comment
Насколько я знаю, API нет. Как насчет передачи имени в словарь userInfo.   -  person vadian    schedule 28.10.2020
comment
@vadian так и думал, у меня не было слишком много переменных, поэтому я не чувствовал необходимости создавать структуру для хранения пользовательских значений по умолчанию, но теперь я решил это таким образом, спасибо.   -  person Peter Ruppert    schedule 29.10.2020


Ответы (1)


вам нужно преобразовать текст в речь с помощью фреймворка AVFoundation

когда вы нажимаете свое уведомление, вам также нужно нажимать AVSpeechSynthesizer

вот как вы это установили:

let utterance = AVSpeechUtterance(string: "Hello world")
utterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
utterance.rate = 0.1 

let synthesizer = AVSpeechSynthesizer()

Вот голосовое действие:

synthesizer.speak(utterance)
person Aisultan Askarov    schedule 28.10.2020
comment
Не уверен, какое отношение этот ответ имеет к моему вопросу. - person Peter Ruppert; 28.10.2020