2016-09-28 14 views
0

Firebase Storageを使用してFBに画像を保存しています。私はRealtime DBにダウンロードURLを保存しています。 :異なるプロジェクトからFirebase Storageに保存されたファイルをダウンロードして使用する

let storage = FIRStorage.storage() 
    imageRefInDB.observeEventType(.Value, withBlock: { (snapshot) in 
     // Get download URL from snapshot 
     let downloadURL = snapshot.value as! String 
     // Create a storage reference from the URL 
     let storageRef = storage.referenceForURL(downloadURL) 
     storageRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in 
      if (error != nil) { 
       print(error.debugDescription) 
      } else { 
       let downloadedImage = UIImage(data: data!) 
      } 
     } 
    }) 

私の問題は、別のFirebaseプロジェクトの中にある写真の一部を使いたいのです。例えば、ダウンロードURLは次のようになります。 https://firebasestorage.googleapis.com/v0/b/PROJECT1.appspot.com/o/someMedia&token

私の現在のプロジェクトで、バケツのような異なる場合: https://firebasestorage.googleapis.com/v0/b/PROJECT2.appspot.com/o/someMedia&Token

私は私の現在のPROJECT2PROJECT1ファイルを使用しようとすると、私は取得しています次のエラー:

reason: 'Provided bucket: PROJECT1.appspot.com does not match bucket specified in FIRApp configuration: PROJECT2.appspot.com 

通常のURLのダウンロードでそれらを取得せずにFirebaseの設定のような他のプロジェクトからダウンロードする論文ファイルを有効にする方法はありますか? ご協力いただきありがとうございます!

答えて

2

私はそれを一度試して、不幸な時をもたらしました。私の場合、私はイメージのために2つの異なるバケツを持っていたので、私は別の解決策を見つけなければなりませんでした。あなたは、単一のバケツを持っている場合は

、あなたはあなたのFIRAppにそのバケットを設定してみてくださいすることができます

let firOptions = FIROptions(googleAppID: googleAppID, bundleID: bundleID, GCMSenderID: GCMSenderID, APIKey: nil, clientID: nil, trackingID: nil, androidClientID: nil, databaseURL: databaseURL, storageBucket: storageBucket, deepLinkURLScheme: nil)   
FIRApp.configureWithName("anotherClient", options: options) 
let app = FIRApp(named: "anotherClient") 

let storageRef = FIRStorage.storage(app: app!).reference() 

this answerから撮影、あなたのニーズに合わせてそれを変更する必要があるかもしれませんので、

このアプリでは、Firebase Storage APIを使用してイメージデータをダウンロードすることができます。

あなたが複数のバケットを(私が持っていたとして)している場合、あなたはどちらか(私はなかったと)(FirebaseストレージAPIを使用せずに)downloadURLから自分をイメージをダウンロード扱う複数のアプリケーションを設定する必要がありますか:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { 
    let data = NSData(contentsOfURL: downloadURL) //make sure your image in this url does exist, otherwise unwrap in a if let check 
    dispatch_async(dispatch_get_main_queue(), { 
     let downloadedImage = UIImage(data: data!) 
    }); 
} 
+1

フランクは正しいです。将来、同じプロジェクトの他のバケットをリンクできるようにする予定です(イメージバケットとバックアップバケットを持つことができます)。しかし、今のところ、他の 'FIRApp'を使う必要があります。 –

関連する問題