3

私はアプリケーションを開発していますが、同じユーザーデバイス間でお気に入り、ブックマークなどを共有できる機能を実装したいと思います。だから、iCloudのようなものを実現したい。

私は2つの考えられるアイデアに出くわしました:バックアップマネージャーとGoogleドライブ。Backup Managerは最も単純なソリューションであり、私のニーズに合うと思いますが、間違っているかもしれません。

:バックアップサービスは、アプリケーションデータを他のクライアントと同期したり、通常のアプリケーションライフサイクル中にアクセスしたいデータを保存したりするようには設計されていません。バックアップデータをオンデマンドで読み書きしたり、バックアップマネージャーが提供するAPI以外の方法でデータにアクセスしたりすることはできません。

:Android Backup Serviceが提供するバックアップトランスポートは、バックアップをサポートするすべてのAndroid搭載デバイスで利用できるとは限りません。一部のデバイスは別のトランスポートを使用したバックアップをサポートしている場合があり、一部のデバイスはバックアップをまったくサポートしていない場合があり、アプリケーションがデバイスで使用されているトランスポートを知る方法がありません。

この情報をSharedPreferencesに保存しているので、Googleのアドバイスに従ってBackupAgentHelperを拡張することから実装を開始しました( http://developer.android.com/guide/topics/data/backup.html#BackupAgentHelper)。

...ユーザーがデータを変更するたびに、アプリはdataChanged()を呼び出す必要があります。これにより、バックアップマネージャーキューにバックアップリクエストが追加されます。

したがって、データを変更するたびに、たとえばブックマークを保存または削除すると、次のように呼び出します。

BackupManager.dataChanged(C.PROJECT_PATH);

アプリケーションが起動したら、次のように呼び出します。

contentBackupManager.requestRestore(new RestoreObserver() {})

すべてがセットアップされ、AndroidManifest.xmlも設定されています。

残念ながら、requestRestoreは!= 0(エラー)を返し、私のBackupAngent(BackupAgentHelperを拡張)onBackuponRestoreが呼び出されていません(onCreateが呼び出されています)。しかし、もう一度:

バックアップ要求によって、onBackup()メソッドがすぐに呼び出されることはありません。代わりに、バックアップマネージャは適切な時間待機してから、最後のバックアップが実行されてからバックアップを要求したすべてのアプリケーションのバックアップを実行します。

これは、自分の答えがGoogleドライブでしか見つからないことを意味しますか?

4

1 に答える 1

6

あなたはBackupManagerこれに使うべきではないというのは正しいです。正確なタイプのデータを保持するサードパーティのサービスを使用する必要があります。したがって、次のいずれかを実行できます。

  • GoogleドライブやDropboxなどのサービスを使用して、任意の種類のファイルをアップロード(およびダウンロード)し、選択した形式(XML / JSON /バイナリ)でデータを保存できるAPIを提供します。ここでの利点は次のとおりです。
    • データストレージにサーバー側のアプリは必要ないため、開発の労力が少なくて済みます
    • ユーザーは独自のデータを所有しています。これは一部のユーザーにとって重要な場合があります
  • アプリに固有のAPIを提供するカスタムサーバー側コードを記述します。これにはGoogleAppEngineを使用できます。明らかに、多くのユーザーを獲得した場合のデメリットは、開発作業の増加とappengineからの潜在的な請求です。ただし、このルートを使用する場合にも、複数の利点があります。
    • ユーザーのドライブまたはドロップボックスアカウントのスペースを無駄にしないでください。
    • ユーザーは、サードパーティのアプリにドライブ/ドロップボックスのクレデンシャルを入力することを好みません。
    • GCMなどの気の利いた機能を使用できるようになります。
    • データは実際のデータベースに保存されるため、必要に応じて構造化でき、所有することもできます。

あなたが選ぶ:)

于 2013-03-25T13:18:52.333 に答える