2013-07-16 12 views
19

私はアプリを実装しようとしていますが、何が最良のアプローチであるか分かりません。異なるデバイス間でデータを同期する方法

シナリオ:

私はToDoリストを作っていますし、私は3つの項目を追加していアプリを持っています。私はこのために私の電話を使用します。 その後、私はタブレットを取り出し、別のタスクを追加し続けたいと思います。その後、しばらくして私は妻の電話を受け取り、2つの新しいタスクを追加したいと考えています。

基本的には、タスクをオンラインで保存し、アプリと同期できるようにしたいと思っています。

私は2つの方法を見ています:

  • は、データベース+ Webサービス呼び出しを使用してWebサーバーを持っています。これには、ホストを支払って、いくつかの余分なmysql + Webサービス技術を学ぶという欠点があります。

  • データをクラウドに何らかの形で保存し、そのアプリケーションをログインしてファイルを保存するアカウントにアクセスできるようにします。私はここではGoogle Drive/Dropboxのようなものを考えています。しかし、ファイル全体ではなく、更新された値だけをどのように同期させることができるのか分かりません。私が考えているので、すべてのタスクを1つのファイルに保存すると、ファイルを更新するたびにアップロードする必要がありますが、これは最善の方法ではありません。

私は任意のアドバイスに開放されています。どんなアプローチをお勧めしますか?

+0

Google Cloud Saveは完璧なソリューションのようですが、まだリリースされていません... http://developer.android.com/google/gcs/index.html –

答えて

6

Google App EngineまたはAmazon Web Servicesのいずれかになります。彼らはあなたに月ごとの使用量を自由に配分します。そして、あなたが支払いを開始すると、あなたはしばらくの間、フリー層を過ぎていないでしょう。

AWSは現在、もう少し成熟したGAE以上で、同期アダプタの新しいトレーニングクラスを見て、私は彼らに

+3

ありがとうございます。また、DropBox Datastore APIは本当に素晴らしい無料の代替手段と思われます... – Alin

2

を研究していたとき、GAEがあったことを実装するために少し簡単と思われた:のための http://developer.android.com/training/sync-adapters/index.htmlをデバイスからサーバーにデータを送信するための基本。

Android搭載端末では、タスクをコンテンツプロバイダに保存することをおすすめします。これは、最後に同期した後の更新を追跡するのに役立ちます。その後、同期中にプロバイダーにクエリを実行し、更新されたデータのみを送信し、サーバーにデータを格納することができます。

おそらくデバイスに最後の更新時間を格納する必要があります。そのため、サーバーにまだデバイスにないデータが含まれているかどうかを確認できます。すべてのデバイスを同期させるには、タスクをダウンロードする必要があります。

0

Rethyncフレームワーク(ソースはフリーウェア)をご覧ください。これを使用すると、変更を検出して更新されたデータのみを同期するタスクを簡素化できます。次に、Rethyncはクライアント側とサーバー側の両方のAPIを提供するので、独自のサービスを作成したり、Web側でホストすることができます。また、選択したクラウドサービス用に独自のトランスポートを作成することもできます(将来、 、彼らは現在開発中です)。

+0

これはプレリリースを過ぎて決してしなかったように見えます。これはまだ積極的に開発されていますか?どんな更新?ロードマップ? – IInspectable

+0

@IInspectable安定していて、完全に機能し、ドキュメントも含まれています。問題が報告された場合は、それに応じて実装を更新します。将来の開発に関しては、現在の状態のエンジンは自己完結型です。つまり、新しい機能は現在の同期エンジンのコンセプトに適合しません。一方、TLSのようなものはすでに存在しています(TLSをサポートするトランスポートを使用することによって)。 –

15

Googleドライブの「アプリケーションデータ」フォルダもあります。

https://developers.google.com/drive/android/appfolder

これは、ユーザーのストレージスペースを使用することの利点を持っています。

+1

私はこのために両方のデバイスで同じアカウントを持っていなければならないと思います。 – TWiStErRob

+0

@TWiStErRobデバイスにログインするために同じアカウントを使用する必要があるとは限りませんか? – CamHart

+2

@CamHartあなたは正しいです。私はTWiStErRobのポイントは、OPは妻の電話に彼らの口座を持っている可能性が低いということです。したがって、デバイス間でデータを簡単に同期できる方法ではありますが、必ずしもすべての要件を満たしているとは限りません。 – Mike