web-dev-qa-db-ja.com

異なるデバイス間でデータを同期する方法

アプリを実装する予定で、最善の方法がわからないところまで来ました。

シナリオ:

Todoリストを作成し、3つのアイテムを追加するアプリがあります。私はこのために私の電話を使用します。次に、タブレットを持っていき、別のタスクを追加し続けたいと思います。それからしばらくして、妻の電話を取り、2つの新しいタスクを追加したいと考えています。

基本的に私はタスクをオンラインで保存する非常にシンプルな方法を持ち、それをアプリと同期できるようにしたいと考えています。

次の2つの方法が考えられます。

  • データベース+ Webサービス呼び出しを備えたWebサーバーがあります。これにはホストに支払いをするという欠点があり、追加のmysql + Webサービステクニックを学びます。

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

私はどんなアドバイスでも受け入れます。どのようなアプローチをお勧めしますか?

22
Alin

Google App Engine または Amazon Web Services のどちらかを調べます。どちらも1か月あたりの使用量の無料割り当てを提供します。それを超えると、支払いを開始した場合、しばらくの間無料利用枠を超えられない可能性があります。

AWSは現在GAEよりも少し成熟しており、GAEを調査していたときの実装よりも少し簡単であるように見えました

9
tyczj

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

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

これには、ユーザーのストレージスペースを使用できるという利点があります。

17
Mike

デバイスからサーバーへのデータ送信の基本については、同期アダプターの新しいトレーニングクラスをご覧ください: http://developer.Android.com/training/sync-adapters/index.html

Androidデバイスでは、タスクをコンテンツプロバイダーに保存することをお勧めします。これにより、前回の同期以降の更新を追跡するのに役立ちます。その後、同期中にプロバイダーにクエリを送信して送信できます更新されたデータのみをサーバーに保存します。

最終更新時刻をデバイスに保存して、サーバーにまだデバイス上にないデータが含まれているかどうかを確認できるようにする必要があります。すべてのデバイスを同期させるには、タスクもダウンロードする必要があることに注意してください。

3
Joe Malin

GoogleのFirebaseを試すことができます。 FirebaseはAndroidおよびiOSデバイス用のSDKを提供します。また、Firebaseはオフラインと同期をサポートします。Firebaseはオブジェクトストレージサービスも提供します。Firebaseアプリは想像以上に簡単に作成できます。こちらをご覧ください- firebaseのfirestoreサービス

1
VivekRajendran

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