私はdjangoアプリとIphoneアプリを書いています.それらを同期させる必要があります. ユーザーは、Web アプリと iPhone アプリで新しいオブジェクトを削除、更新、および作成できます。iPhone でオンラインになると、両方のアプリが同期している必要があります。これを行う簡単な方法はありますか?
ありがとう、
ホアキン
一般に: 簡単な方法はありません。しかし、私はアプローチの概要を説明します。
変更が上書きされることを気にしない場合: 各レコードの最新の変更のタイムスタンプと、各同期のタイムスタンプを保持します。同期すると、最後の同期以降の iPhone 上のすべての更新と、サーバー上のすべての更新のリストが取得されます。そのレコードの iPhone のタイムスタンプがサーバーのタイムスタンプよりも新しい場合は、iPhone からサーバーに書き込みます。逆の場合も同様です。
しかし、あなたはおそらく気にします。「金曜日の待ち合わせ場所」というメモを編集したとします。それは空から始まりました。今、あなたは電話で「私の家」と書きました。10 分後、あなたの友人はサーバー上で同じメモを編集し、「ダイナー」と書きました。誰が勝ちますか?スタック オーバーフローはあなたに代わって答えることはできません。それはアプリケーション固有です。
では、上記の方法を変更してください。前回の同期以降、レコードのサーバー バージョンとローカル バージョンの両方が編集されている場合は、ユーザーに何をすべきかを尋ねる必要があります。それが基本的なアルゴリズムです。
変更が上書きされないように気を配り、同じドキュメント内の別の場所に変更をマージしたい場合、システムは Subversion や Git などのバージョン管理システムの複雑さに近づき始めます。まったく単純ではありません。
これを行う組み込みの方法はありません。サーバー データ ストアとローカル データ ストアを iPhone に保持する必要があります。オンラインの場合は手動で違いを確認し、サーバーと iPhone 側で実行する必要があるアクション (削除、更新など) を確認します。
通常、同期は困難です。サーバーと iPhone のデータ ストアのレイアウトを開始し、それらがどのように関係しているか、サーバーまたは iPhone が対応するレコードの状態をどのように認識できるかを考えて、同期を維持することをお勧めします。