web-dev-qa-db-ja.com

Firebase-インターネットがオフラインのときに画像をアップロードする

Firebaseには、オフラインでもデータベースを使用してデータベースにデータを送信する優れたオプションがあり、接続が再び確立すると、データが自動的にデータベースに送信されます。

インターネットがオフの場合でも画像を送信するようなFirebaseストレージを使用してそれを行うことは可能ですか?インターネットが再びオンになると、画像ファイルが自動的に送信されますか?

もしそうなら、どうすればそれを行うことができますか? Firebaseを使用していない場合、他のオプションはありますか?

16
dani jinji

はい。 Firebase Storageクライアントは、アップロードの再開をサポートしています。アップロードについては、Firebase Storageのドキュメントをご覧ください( iOSWebAndroid )。

Androidの場合:

uploadTask = mStorageRef.putFile(localFile);
sessionUri = uploadTask.getUploadSessionUri();
//save the sessionUri to persistent storage in case the process dies.

そして再開するには:

//resume the upload task from where it left off when the process died.
//to do this, pass the sessionUri as the last parameter
uploadTask = mStorageRef.putFile(localFile,
                new StorageMetadata.Builder().build(), sessionUri);

アップデート(20160809)

SessionUriを処理する1つの方法:

  1. uploadTaskを作成するときに、sessionUriを取得してアプリのSharedPreferencesに保存します。
  2. uploadTaskが完了したら、アプリのSharedPreferencesからsessionUriを削除します。
  3. アプリが再起動したら、sessionUriSharedPreferencesがあるかどうかを確認します。その場合は、アップロードを再開してください。
10