iOS で使ってみる

Cloud Storage for Firebase を使用して画像や動画などのユーザー作成コンテンツをアップロードして共有し、リッチメディア コンテンツをアプリに組み込むことができます。データは Google Cloud Storage バケットに格納されます。これはエクサバイト スケールのオブジェクト ストレージ ソリューションで、高い可用性とグローバルな冗長性を備えています。Cloud Storage を使うと、モバイル端末やウェブブラウザから直接ファイルを安全にアップロードでき、不安定なネットワークも簡単に扱うことができます。

事前準備

  1. Firebase SDK をインストールします。
  2. Firebase コンソールでアプリを Firebase プロジェクトに追加します。

公開アクセスを設定する

Cloud Storage for Firebase には宣言型のルール言語が用意されているため、データの構造化、インデックスの作成方法、データの書き込みと読み取りのタイミングを定義できます。認証ユーザーのみがデータの読み取りと書き込みを行えるように、Storage への読み書きアクセスはデフォルトで制限されています。Authentication を設定せずに開始するには、公開アクセスルールを設定します。

この場合、アプリを使用しない人を含むあらゆる人々に Storage が公開されるので、認証の設定時に、Storage を再度制限するようにしてください。

Cloud Storage をアプリに追加する

プロジェクトの Podfile に次の依存関係があることを確認します。

pod 'Firebase/Core'
pod 'Firebase/Storage'

pod install を実行して、作成された .xcworkspace ファイルを開きます。

Cloud Storage を設定する

Firebase の参照を作成または使用する前に、Firebase を初期化する必要があります。他の Firebase 機能ですでに初期化を行っている場合は、この手順をスキップできます。

  1. Firebase モジュールを UIApplicationDelegate サブクラスにインポートします。

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. FirebaseApp 共有インスタンスを設定します。通常はアプリケーションの application:didFinishLaunchingWithOptions: メソッドを使用します。

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  3. デフォルトの Firebase アプリを使用して、ストレージ サービスへの参照を取得します。

    Swift

    let storage = Storage.storage()
    

    Objective-C

    FIRStorage *storage = [FIRStorage storage];
    

これで Cloud Storage が使えるようになりました。

まず、Cloud Storage 参照を作成する方法を学びましょう。

高度な設定

次のようないくつかの使用例では、追加の設定が必要です。

最初の使用例は、ユーザーが世界中に存在し、それぞれのユーザーの近くにデータを保存したい場合に最適です。たとえば、レイテンシを短縮するため、米国、ヨーロッパ、アジアの各リージョンでバケットを作成して、各リージョンのユーザーのデータをそこに保存できます。

2 番目の使用例は、アクセス パターンの異なるデータがある場合に役立ちます。 たとえば、写真など、頻繁にアクセスされるコンテンツを格納するためにマルチリージョンまたはリージョン バケットを設定し、ユーザー バックアップなど、アクセス頻度の低いコンテンツを格納するためにニアラインまたはコールドライン バケットを設定できます。

上記のどちらの場合も、複数のストレージ バケットを使用します。

3 番目の使用例は、Google ドライブのような、ユーザーが複数のログイン アカウント(個人用アカウントや仕事用アカウントなど)を持つことができるアプリを作成する場合に役立ちます。カスタムの Firebase App インスタンスを使用して、追加の各アカウントを認証できます。

複数のストレージ バケットを使用する

上記で提供されているデフォルト以外のストレージ バケットを使用する場合、または 単一のアプリで複数のストレージ バケットを使用する場合は、カスタム バケットを 参照する FIRStorage のインスタンスを作成できます。

Swift

// Get a non-default Storage bucket
storage = Storage.storage(url:"gs://my-custom-bucket")
    

Objective-C

// Get a non-default Storage bucket
FIRStorage storage = [FIRStorage storageWithURL:@"gs://my-custom-bucket"];
    

インポートされたバケットの操作

既存の Cloud Storage バケットを Firebase にインポートする場合には、Google Cloud SDK に含まれている gsutil ツールを使用して、Firebase からこれらのファイルにアクセスできるようにする必要があります。

gsutil -m acl ch -r -u firebase-storage@system.gserviceaccount.com:O gs://<your-cloud-storage-bucket>

これは、新しく作成されるバケットには影響しません。新しく作成されるバケットには、Firebase を許可するデフォルトのアクセス制御が設定されます。これは一時的な措置であり、将来は自動的に行われるようになります。

カスタムの Firebase アプリを使用する

カスタム FirebaseApp を使用してより複雑なアプリを作成する場合には、このアプリで初期化される Storage のインスタンスを作成できます。

Swift

// Get the default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp)

// Get a non-default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
    

Objective-C

// Get the default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp];

// Get a non-default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
    

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。