2017-11-28 5 views
2

私のアプリは、ユーザが自分の仕事を受け取るログインベースのユーザシステムで構成されています。ユーザーのタスクリストはサーバーと定期的に同期する必要があり、新しいタスクがアプリケーションに即座に反映されます。私はこの種の同期を他のアプリでもやっていますが、これを実行するための最良の方法を知りたいと思います。私は2つのアプローチを私の心に持っています。私にはどちらが良いか、あなたに別の考えがあるかどうか教えてください。アプリをサーバーで最新の状態に保つにはどうすればよいですか?

アプローチ1

Iは、一定の時間間隔でバックグラウンドサービスを実行し、HTTP要求(サーバ要求に対して即ちAPP)を介してサーバ上の任意の変更をチェックするためにIntentServiceAlarmManagerを使用することができます。

APPROACH 2

私は NanoHTTPDライブラリを使用して私のアプリを通じて小さなTCPサーバーをホストすることができますし、サーバー上のすべての新しいエントリの後に、私は、これらの変更を知らせるこの小さなTCPホストにサーバーからの要求を行うことができる

(すなわちサーバーからアプリへのリクエスト)。

私は前APPROACH1を使用していたが、私はより多くのAPPROACH2(私はこれが少ないバッテリーを消耗すると思います)に興味を持っています。だから、どちらが良い方法(つまり、より効率的で安全なものなのか)を教えてください。あなたが他のアイディアを持っているなら、それを自由に共有してください。

+0

あなたはソケット –

+0

を介してサーバに接続Rethinkdbは、レルムは、Couchbaseの携帯電話は、解析サーバは1つが、より良いレルムまたはfirebase –

+0

で物事を同期するために構築されたすべてのセルフホストされたデータベース・オプションがあります場合は依存滞在することができますホストされたソリューションがほしい –

答えて

5

どちらの方法もバッテリを枯渇させます。

ここでのベストプラクティスはプッシュ通知の使用です。 FireBaseクラウドメッセージングのようなサービスのよく知られたプロバイダの1つにアプリケーションを登録して、通知の配信を処理するクラウドメッセージングサービスに通知を送信するようにアプリケーションのサーバを設定するだけです。

Google Playサービスを使用して接続を開いたままにするため、バッテリーの使用について心配する必要はありません。

サービスのonMessageReceivedメソッドをオーバーライドしてそこからデータを更新するだけで済みます。

+0

すぐに応答していただきありがとうございます。私はGoogleプレイサービスが接続を開いたままにしていることを知らなかった。これは本当に私にとって有益だった。 –

1

なぜプッシュ通知サービスを使用しようとしないのですか? バッテリー寿命とネットワーク使用の点でより良い選択肢になります。

EDIT:私の意見では は、バッテリーを節約し、ネットワークの使用を節約するために引っ張って(定期的にサーバに要求する)を避ける方が良いだろう。 このソリューションでは、Google Cloud Messaging/Firebaseのようなサービスを通じて、プッシュ通知を実装することができます(サーバーがリクエストする新しいことがアプリに通知されます)。

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)を取得すると、[任意の投稿にコメントする]ことができます(https:// stackoverflow。com/help /特権/コメント);代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューより](/レビュー/低品質の投稿/ 18088918) – blizzard

+0

よろしくお願いいたします。私は謝罪し、私は私の答えを改善しようとします! – anj0

+0

@ anj0誰もがfirebaseを使用しているようにあなたの答えに感謝します:D –

関連する問題