###環境
swift4.2, xcode 10.1
Firebase初めて扱う
前提・実現したいこと
Firebase Cloud Storage にアップロードしてある音声ファイル(m4aファイル)を取得し、
AVAudioPlayerで再生させたい
発生している問題・エラーメッセージ
Firebase cloud Storage からStorageReference型でデータの取得はできるのですが、
音声を再生させるため、URL型に変換しようとしても格納したい変数urlの値はnilになってしまいます。
ブレークポイントで↓の文が丸々飛ばされてしまいます
do { self.audioPlayer = try AVAudioPlayer(contentsOf: url) } catch let error as NSError { self.audioPlayer = nil _ = error }
該当のソースコード
Swift
1 func getURL(){ 2 let path = "case1.m4a" 3 let storage = Storage.storage() 4 let storageRef = storage.reference() 5 let voiceRef = storageRef.child(path) 6 voiceRef.downloadURL { url, error in 7 guard let url = url else { return print("urlがnil") } 8 do { 9 self.audioPlayer = try AVAudioPlayer(contentsOf: url) 10 } catch let error as NSError { 11 self.audioPlayer = nil 12 _ = error 13 } 14 } 15 audioPlayer?.delegate = self 16 audioPlayer?.prepareToPlay() 17 18 self.audioPlayer?.play() 19 }
試したこと
Firebaseではなく、プロジェクトに直接保存した同じ音声ファイルでは再生された。(音声ファイルの問題ではなさそう)コード↓
func setUpAudio(){ let url = URL(fileURLWithPath: path) var audioError:NSError? do { audioPlayer = try AVAudioPlayer(contentsOf: url) } catch let error as NSError { audioError = error audioPlayer = nil } if let error = audioError { print("Error (error.localizedDescription)") } audioPlayer?.delegate = self audioPlayer?.prepareToPlay() }
補足情報(FW/ツールのバージョンなど)
変数voiceRefにはgs://~.appspot.com/case1.m4aがStorageReference型で入っている
ログにはgurad文に書いた「urlがnil」が出ている
あなたの回答
tips
プレビュー