В моем приложении пользователь может записывать звук до 25 секунд.
Я сохранил звук в каталоге документов как «1.m4a», и всякий раз, когда пользователь записывает снова, он заменяет исходный файл в «1.m4a».
Я хотел сыграть «1.m4a» в качестве звука для моего локального уведомления. Я нашел источники, которые сказали, что это было невозможно, но также некоторые источники сказали, что это возможно, он хранится в каталоге Library / Sounds. Что это значит? Кто-нибудь может научить меня, как я могу это сделать, пожалуйста!
Моя функция записи звука работает хорошо, и у меня есть кнопка, которая может воспроизводить записанный звук при нажатии.
Запись аудио:
@IBAction func recordAction(_ sender: UIButton) {
counter = 0
startCounter()
if (audioRecorder == nil) {
audioReadyLabel.isHidden = true
counterLabelOutlet.isHidden = false
numberOfRecords = 1
let fileName = getDirectory().appendingPathComponent("\(numberOfRecords).m4a")
let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), AVSampleRateKey: 12000, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
do {
audioRecorder = try AVAudioRecorder(url: fileName, settings: settings)
audioRecorder.delegate = self
audioRecorder.record()
stopOutlet.isHidden = false
stopLabelOutlet.isHidden = false
recordOutlet.isHidden = true
recordLabelOutlet.isHidden = true
}
catch {
displayAlert(title: "Oops", message: "Recording failed")
}
}
else {
stopOutlet.isHidden = true
stopLabelOutlet.isHidden = true
audioRecorder.stop()
//what does the below mean ***
audioRecorder = nil
counterTimer.invalidate()
}
}
Воспроизведение аудио:
func playPeptalk() {
let path = getDirectory().appendingPathComponent("\(numberOfRecords).m4a")
do {
audioPlayer = try AVAudioPlayer(contentsOf: path)
audioPlayer.play()
}
catch {
}
}
Локальное уведомление:
let content = UNMutableNotificationContent()
content.title = "Rise & Shine"
content.subtitle = "Let's start the day!"
content.sound = UNNotificationSound(named: UNNotificationSoundName("1.m4a"))