Я пытаюсь загрузить аудио, которое я записал, в базу данных Firebase. Запись работает нормально, и звук также воспроизводится, мне просто нужно загрузить его, а также загрузить его другим пользователям, чтобы они могли его прослушать. Само приложение уже отправляет текстовые сообщения, и они работают без каких-либо проблем, пользователи уже могут общаться между ними.
Это то место, где я записываю аудио (сеанс аудиозаписи уже открыт).
@IBAction func sendAudio(_ sender: Any) {
//Check if there is an active AudioRecorder
if audioRecorder == nil {
numberOfRecords += 1
let filename = getAudioFileURL()
let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
//Start recording
do {
audioRecorder = try AVAudioRecorder(url: filename, settings: settings)
audioRecorder.delegate = self
audioRecorder.record()
audioButton.setTitle("Stop", for: .normal)
} catch {
alertsAudio(title: "Error", message: "Error!")
}
} else {
//Stop audio recording
audioRecorder.stop()
audioRecorder = nil
UserDefaults.standard.set(numberOfRecords, forKey: "myNumber")
messageTableView.reloadData()
audioButton.setTitle("Record", for: .normal)
}
}
И вот как я получаю URL файла:
func getDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentDirectory = paths[0]
return documentDirectory
}
func getAudioFileURL() -> URL {
return getDirectory().appendingPathComponent(".m4a")
}
Теперь мне нужно получить URL этого файла, загрузить его в Firebase и загрузить в приложение других пользователей.
Я использую этот метод для извлечения текстовых сообщений из базы данных:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
print("Worked!")
if messageTextfield.text == "" {
//o campo de mensagem está em branco
let alert = UIAlertController(title: "Error!!!!", message: "You can't send a message without text. Please type a message!", preferredStyle: .alert)
alert.addAction(UIKit.UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(alert, animated: true)
messageTextfield.becomeFirstResponder()
} else {
messageTextfield.isEnabled = false
sendButton.isEnabled = false
let messagesDB = Database.database().reference().child("Messages")
// if audioRecorder != nil{
// message = getDirectory().appendingPathComponent("\(numberOfRecords).m4a")
// } else {
// message = messageTextfield.text
// }
let messageDict = ["Sender": Auth.auth().currentUser?.email, "MessageBody": messageTextfield.text]
messagesDB.childByAutoId().setValue(messageDict) {
(error, reference) in
if (error) != nil {
print(error!)
} else {
print("Message sent!")
self.messageTextfield.isEnabled = true
self.sendButton.isEnabled = true
self.messageTextfield.text = ""
}
}
}
return true
}
Спасибо за внимание, ребята!