イー・エージェンシーはマーケティングデータ活用でビジネス課題を解決するプロフェッショナル

【Firebase】Firebase Storageとは?(1)アプリからファイルにアクセスする方法

この記事をシェア

Firebase Storage に、Android アプリからアクセスする方法についてご紹介します。
Firebase Storage は、オンラインのストレージ機能です。
無料の料金プランでも、5GB までのファイル容量が与えられています。

今回はアプリからFirebase Storage を利用する方法をご紹介したいと思います。
公式のドキュメントはコチラです。

まず、アプリレベルの build.gradle に以下の依存関係を追加します。
(バージョンは、最新の値に書き換えて下さい。)

implementation 'com.google.firebase:firebase-storage:19.1.0'

ストレージの特定のファイルへの参照は、以下のように取得します。
予め、Firebase Console を使って、フォルダとファイルを作成しておきます。

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference();

StorageReference hogeRef = storageRef.child("hoge");
StorageReference imageRef = hogeRef.child("test.png");

Log.d(TAG, "getPath : " + imageRef.getPath());
Log.d(TAG, "getName : " + imageRef.getName());
Log.d(TAG, "getBucket : " + imageRef.getBucket());

StorageReference のメソッドを使うことで、ファイルツリーを辿ることができます。
また、パスやバケット名などの情報を取得することができます。
ファイルのメタ情報については、以下のように取得します。
通信をはさむため、コールバック方式の処理になっています。


imageRef.getMetadata().addOnCompleteListener(new OnCompleteListener<StorageMetadata>() {
  @Override
  public void onComplete(@NonNull Task<StorageMetadata> task) {
    if (task.isSuccessful()) {
      StorageMetadata metadata = task.getResult();
      Log.d(TAG, "getMetadata success");
      Log.d(TAG, "metadata.getName : " + metadata.getName());
      Log.d(TAG, "metadata.getSizeBytes : " + metadata.getSizeBytes());
      Log.d(TAG, "metadata.getCreationTimeMillis : " + metadata.getCreationTimeMillis());
      Log.d(TAG, "metadata.getContentType : " + metadata.getContentType());
      Log.d(TAG, "metadata.getMd5Hash : " + metadata.getMd5Hash());
    } else {
      Log.d(TAG, "getMetadata failure", task.getException());
    }
  }
});

これにより、ファイルサイズなどのメタ情報が取得できます。
メタ情報の書き換えについては割愛しますが、任意のキーバリュー値 (カスタムメタ情報) を格納することもできます。
(ただし、公式のドキュメントには、アプリ固有の情報は、カスタムメタ情報に格納するよりも、データベースを使う方が良いと書かれています。)
ファイルをアップロードするには、例えば以下のようにします。
実験のために予め、アプリ内にファイルを用意しておきます。

try {
  final InputStream stream = new FileInputStream(new File(getApplicationContext().getFilesDir(), "test.png"));

  StorageReference uploadRef = hogeRef.child("upload.png");

  UploadTask uploadTask = uploadRef.putStream(stream);
  uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
      try { stream.close(); }
      catch (IOException e) {}

      if (task.isSuccessful()) {
        Log.d(TAG, "putStream success");
      } else {
        Log.d(TAG, "putStream failure", task.getException());
      }
    }
  });
} catch (FileNotFoundException e) {
}

この例では、ファイルからストリームを作り、それを用いてアップロードしています。
それ以外にも、メモリ内のデータをアップロードするメソッドなどが用意されています。

いかがでしたか?イー・エージェンシーでは、Google アナリティクス 360 やサポートをご契約のお客様を対象に、Google アナリティクス for Firebase の導入支援を行っております。
また、アプリとWebのクロスプラットフォーム分析ができるGoogle アナリティクス 4 プロパティ(GA4)の導入支援も行っております。
まずは下記よりお気軽にお問い合わせください。

Google アナリティクス for Firebase ・Google アナリティクス 4 プロパティ(GA4) の導入に関するお問い合わせはこちら

関連する記事

【Firebase】Firebase Storageとは?(2)ファイルをアプリにダウンロードする方法
https://googleanalytics360-suite.e-agency.co.jp/blog/3342/

【Firebase】Firebase Storageとは?(3)ファイルを自動的に削除する方法
https://googleanalytics360-suite.e-agency.co.jp/blog/3309/

この記事をシェア

この記事を書いた人

アバター

広報・PR・マーケティング担当

このライターが書いた記事を見る

私たちは、データを活用した成果貢献のための支援を行っております。
サービスについてお気軽にご相談・お問い合わせください。

資料ダウンロード

デジタルマーケティングに活用いただける様々な資料を
ダウンロードいただけるようご用意しました。

ご相談・お問い合わせ

私たちは、貴社のビジネス成長のためのデータ活用を支援いたします。
支援内容についてはお気軽にご相談・お問い合わせください

このページの先頭へ