2017-03-17 6 views
-1

1人のアプリユーザーとサーバーの間でチャットメッセージを同期するためのより良いソリューションを設計する際にお役立てください。アプリケーションがオフラインになった場合、私はアプリケーションデータベースにメッセージを保存し、インターネットが利用可能なときにサーバーにプッシュする必要があります。そして、同時に誰かにメッセージを送るのであれば、私はタイムスタンプに基づいてそれらを適切に配置したいと思う。しかし、このシナリオでは、タイム・タンプが信頼できるのでしょうか?オフライン/オンラインモードでチャットメッセージを正しく同期するにはどうすればよいですか?

+0

[SyncAdapter](https://developer.android.com/training/sync-adapters/creating-sync-adapter.html)を確認できます。 – hrskrs

答えて

1

はいタイムスタンプは信頼性があります。ただし、保留中のキューにあるメッセージが送信されたときにタイムスタンプを更新しないようにしてください。

これを楽しみにしているのは、ブロードキャストマネージャーを作成することです。既にapp-dbを使用しているので、簡単に操作できます。

ステップ1:良い

を変更SO同じポスト <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> は、接続の変更を検出するために使用されhereを見つけることができるネットワークをリッスンするBroadCastReceiverを作成します。

ステップ2:あなたのメッセージのためのint型のフラグを作成します。

:仮定:int型

0 - >未送信

の1->

2-送っ>など読んで.. 。

ユーザーがメッセージを送信するたびに、インターネット接続がthisを使用しているかどうかをチェックし、インターネットがあなたのアプリのローカルDBにavail storeでない場合は他のFLAG->0あなたはFLAG-として保存サーバからポジティブコールバックを取得する場合、サーバ

への投稿>再び他の1 0

ステップ3で:今すぐあなたの放送受信機のごonRecieve方法では、変更されたステータスが接続されているかどうかを確認してください(ネットワーク接続が確立されている場合など)。次に、フラグ - > 0 で保存されたすべてのメッセージをdbから取り出して、ステップ2で検証を再度行ってサーバーに再送信します。新しいエントリを作り直すのではなく、今度はそれらを更新してください!

それはそうです!

+0

ありがとう、それは役に立ちました:) –

+0

私の喜び。それを試してみて、それ以上の助けが必要な場合は教えてください。また、それがうまくいけば他の人が役に立つかもしれないように、それを答えとしてマークしてください! – MadScientist

関連する問題