Reputation: 1177
I set up a notification with a custom sound like so:
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)
}
Now I want to get the name of the custom sound I used when I retrieve the specific notification request from its id
var notification: UNNotificationRequest
I try to get the sound name like so:
let sound = notification.content.sound!.debugDescription
But this returns:
<UNNotificationSound: 0x2822419d0>
Is there a way to get the filename from that code?
Upvotes: 0
Views: 209
Reputation: 118
you have to convert your text into speech by using AVFoundation framework
when you push your notification you also have to push AVSpeechSynthesizer
here is how you set it:
let utterance = AVSpeechUtterance(string: "Hello world")
utterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
utterance.rate = 0.1
let synthesizer = AVSpeechSynthesizer()
Here is the voice action:
synthesizer.speak(utterance)
Upvotes: -2