我正在製作視頻共享應用程序,我有一個Objective-C版本以及一個Swift。我將所選視頻的網址成功上傳到Firebase存儲並同時上傳。在Objective-C項目中,視頻顯示正常,沒有問題,但在Swift版本中,雖然URL已經記錄到控制檯,但完全相同,但沒有,AVPlayer只是空白的,沒有噪音沒有什麼。從Firebase存儲返回的網址在一個項目中運行,但不在另一個項目中
這是我的雨燕上傳和檢索代碼:
上傳:(既metadata.downloadURL和metadata.downloadURL.absoluteString試過)
func sendData(string: String) {
if string == "" && self.urlToUpload == nil {
self.showAlertWithTitle("Please upload a valid file and caption", message: "")
}
else {
//write url to storage ref
if urlToUpload != nil {
let childString = NSString(format: "Video %@", NSUUID().UUIDString)
let videosRef = storageReference.child("postVideos").child(childString as String)
let metadata = FIRStorageMetadata()
metadata.contentType = "Video"
let uploadTask = videosRef.putFile(self.urlToUpload!, metadata: metadata, completion: { (metadata, error) in
if error != nil {
print("ERROR DESC. %@", error?.localizedDescription)
print("ERROR %@", error)
}
else {
print(metadata)
//pop alert here then set button back etc.
}
})
uploadTask.observeStatus(.Success) { snapshot in
print("Success!")
print(snapshot)
print(snapshot.metadata?.downloadURL())
//self.downloadURLToUpload = snapshot.metadata?.downloadURL()
self.downloadURLString = snapshot.metadata?.downloadURL()?.absoluteString
uploadTask.removeAllObservers()
//if download url exists send rest of data
let emailString = String(FIRAuth.auth()!.currentUser!.email!)
//let postToSend = Post(name: emailString, message: string, downloadURLString: String(self.downloadURLToUpload!))
let postToSend = Post(name: emailString, message: string, downloadURLString: self.downloadURLString)
let postDict = ["name" : postToSend.name!, "message" : postToSend.message!, "downloadURLString" :postToSend.downloadURLString!]
self.reference.child("messages").childByAutoId().setValue(postDict)
self.tableView.reloadData()
}
}
}
}
檢索:
func returnDataFromURL(urlString: String!, completion: CompletionHandler) {
let strg = FIRStorage.storage()
let ref = strg.referenceForURL(urlString)
ref.downloadURLWithCompletion { (url, error) in
if error != nil {
print(error?.localizedDescription)
}
else {
completion(url: url!)
}
}
}
的URL本身是相同的格式,但屬性在控制檯中看起來有點不同,但這可能是我的問題,將它們傳遞給AVPlayer(它與測試視頻所以不是問題)。
檢索到的下載URL如何在Objective-C項目中打印出來。
而且在斯威夫特...
感謝您對課程的幫助下,像往常一樣。
您是否試圖在兩個項目(相同的URL)下載相同的文件,或者您有兩份文件?我的答案如下,如果你想要做同樣的網址,但現在我不確定。 –
沒有,不同的文件,和兩個不同的Firebase項目(我應該做得更清楚),但我會檢查出來。謝謝! – Echizzle
所以唯一的區別是Swift vs Obj-C?奇怪的是,當你嘗試下載它時,你沒有收到錯誤,它只是空的? –