0

ユーザーがオブジェクトを作成し、データベースに保存し、そのオブジェクトがサーバーに投稿されたかどうかを追跡できるようにする優れた設計に頭を悩ませることはできません。

スナップチャットのように - オフライン中に写真と受信者を含むスナップ オブジェクトを作成し、送信を押すと、スナップのリスト (テーブル ビュー) に表示されますが、デバイスがオフラインの場合、要求がタイムアウトまたは失敗すると、赤い感嘆符が表示され、セルをタップして再試行できます。

同様の設計を行うための適切なアプローチは何ですか? 何か案は?

前もって感謝します!

4

2 に答える 2

0

私は似たような種類のアプリに取り組んでいました。アイデアは、DB をどのように構築するかです。この場合、テーブル内の他のすべての属性とともに、bool 値である isSent というもう 1 つの属性を追加します。デフォルトでは、これは false であり、サーバーで更新されたときにのみ true に設定する必要があります。

これは、サーバーに同期されていないアイテムを見つけ出し、isSent が false であるアイテムのみを送信するのに役立ちます。

アイテムがサーバー上で更新されると、アプリはどのように認識するのでしょうか? そのために、サーバーは、送信したリクエストを各リクエストの成功メッセージとともに送り返す必要があります。リクエストは、要件に応じてアイテムの配列または単一のリクエストにすることができます。

Azure 同期テーブルも同じように機能します。最初にアイテムを作成すると、isSent が false としてオフライン DB に格納され、その要求がサーバーに送信されます。サーバーが成功を送信すると、isSent は true に更新されます。

この例を見てみましょう: オフラインでコメントしているとします。各コメントは個別のアイテムと見なされます。したがって、インターネットに接続すると、これらすべてのリクエストが送信され、各アイテムには他と区別するための一意の ID が割り当てられます。サーバーにアップロードするリクエストは次のようになります。

[
    {
        "unique_id" : 1,
        "Comment" : "Hello"
    },
    {
        "unique-id" : 2,
        "Comment" : "How r u"
    }
]

サーバーからの応答は次のようになります。

[
    {
        "unique_id" : 1,
        "Status" : "success"  
    },
    {
        "unique_id" : 1,
        "Status" : "failed"  
    }
]

応答を解析し、S​​tatus に基づいて DB の isSent 列を適宜更新します。

于 2016-04-09T19:40:10.190 に答える