Невозможно использовать записанный клип как звук в локальном уведомлении - PullRequest
0 голосов
/ 15 апреля 2019

В моем приложении пользователь может записывать звук до 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"))

1 Ответ

0 голосов
/ 15 апреля 2019

С Документы

Аудио файлы должны быть уже на устройстве пользователя, прежде чем они могут быть воспроизведены. Если вы используете предопределенный набор звуков для уведомлений, включите аудиофайлы в комплект вашего приложения. Для всех остальных звуков поместите копию аудиофайла в папку Library / Sounds каталога вашего приложения. Объект UNNotificationSound выглядит только в этих двух местах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...