私はビデオ共有アプリケーションで作業しています。私はObjective-CバージョンとSwiftを持っています。私は選択したビデオのURLを両方のプロジェクトでFirebaseストレージにアップロードし、取得します。 Objective-Cプロジェクトでは、ビデオは問題なく表示されますが、SwiftのバージョンではURLはコンソールに記録されていますがまったく同じですがAVPlayerは空白ですノイズは何もない。ここFirebaseストレージから返されたURLは、あるプロジェクトでは動作しますが、他のプロジェクトでは動作しません。
私スウィフトアップロードと検索用コードである:
アップロード:(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プロジェクトでどのように表示されるか。
かつ迅速で...
いつものように、当然の助けをいただき、ありがとうございます。
同じファイルを2つのプロジェクト(同じURL)にダウンロードしようとしていますか、またはファイルのコピーが2つありますか?私の答えはあなたが同じURLをしようとしている場合ですが、今私はよく分かりません。 –
いいえ、別のファイル、2つの異なるFirebaseプロジェクト(私はそれを明確にしておくべきですが)とにかくチェックアウトします。ありがとう! – Echizzle
唯一の違いはSwift対Obj-Cですか?奇数...ダウンロードしようとするとエラーになることはありません。ただ空ですか? –