1

タイトルは基本的にそれを言います。Web アプリとモバイル アプリとして使用できるアプリケーションがあります。モバイル アプリは、データを受信して​​サーバーに送信します。同期を行う際に対処すべきケースがいくつかありますが、どの編集が最新であるかをどうにかして知る必要があります。モバイルアプリの開始時と停止時に同期する予定です。最も困難なケースは、ユーザーがインターネットなしでアプリを起動し、まだインターネットがない状態でアプリを閉じた場合です。これを解決するには?

ユーザーが時計を変更する可能性があるモバイルデバイスを使用しているため、タイムスタンプは役に立たないことに注意してください。

何を提案しますか?競合の解決についてユーザーに尋ねたくはありませんが、自動化を実装します。(最新のものを選択してください)

ありがとう

4

3 に答える 3

4

タイムスタンプは役に立たないわけではありません。使い方を再考する必要があるだけです。この場合、サーバー時間は神です。モバイル デバイスがサーバーとの接続を確立すると、モバイルは問題のデータが作成されてからどれくらい経ったかをサーバーに知らせることができます。次に、情報が転送されると、サーバーは、そのデータの時刻を、サーバー上の現在の時刻からモバイルによって提供された時間を差し引いたものとして設定することを認識します。

たとえば、次のようになります。

  • 午前 8 時に webapp で直接更新されたデータ - 正確な時間
  • モバイルで午前 9 時にデータを更新 - (ネットワーク アクセスなし + 信頼されていない時間)
  • 午前 10 時にさらにデータが webapp に更新されました (現在、サーバーには 2 つのデータ エントリがあります)。
  • 午前 11 時に携帯電話がネットワーク アクセスを取得し、サーバーに接続します。携帯電話は、午前 9 時のデータが 2 時間前のものであることを認識しているため、これをサーバーに伝える必要があります。サーバーはデータを受信し、2 時間経過したことを認識します。サーバーは、次のタイムスタンプで新しい情報を永続化できます: (サーバーの現在の時刻 - 2 時間)。

これにより、モバイル デバイスの時刻に関係なく、午前 9 時のデータの時刻が正確になります。

于 2013-09-26T08:20:55.107 に答える
1

http://www.couchbase.com/communities/couchbase-liteを試してください。iOS および Android 用の組み込み NoSQL ストアであり、CouchDB および Couchbase Server と同期できます。

于 2013-09-29T14:15:11.573 に答える