在我的应用中,用户最多可以录制音频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"))
答案 0 :(得分:0)
来自Docs
音频文件必须已经在用户的设备上才能播放。如果您使用一组预定义的声音来进行通知,请在应用程序包中添加音频文件。对于所有其他声音,请将音频文件的副本放置在应用程序容器目录的 Library / Sounds 文件夹中。 UNNotificationSound对象仅在这两个位置显示