5

Android アプリから「クラウド サービス」への永続的な接続を使用することを検討しています。これは、バックグラウンド サービス (ま​​たはそのようなもの) で常に実行されます。

基本的に、バッテリーを消耗しない軽量の接続を探して、接続を維持するために Web ソケットまたは XMPP を使用することを考えています。この接続にリアルタイムで通知をプッシュできるようにしたいので、定期的なポーリングは望ましくありません。C2DM やその他の商用ソリューションについては知っていますが、独自の. これが、私が調査しているのは Web ソケット (またはその他の軽量接続) である理由です。では、この方法を使用する場合、知っておくべきベスト プラクティスにはどのようなものがありますか?

次のようなことを考えています。

  1. バッテリーの消耗を防ぐ方法、
  2. IP アドレスの変更などを処理するにはどうすればよいですか?
4

2 に答える 2

10

これはあなたが探している答えではないかもしれませんが、アーキテクチャを再考したいと思うかもしれません。

モバイル プラットフォームに期待できること

  • ランダムに変更する IP アドレス
  • 物理的なインターネット接続がランダムに失われる
  • 何も役に立たず、プロセスを強制終了することを決定するOS
  • 接続タイプがランダムに変化し(WIFIから4G、3G、エッジに)、IPが変化します

基本的に、アプリは接続の切断を処理できる必要があります。これは、ほぼ確実に発生するためです。

そうは言っても、リアルタイムの定義によっては完全に実行可能です。実行可能な接続がまだ存在することを継続的に確認したい場合は、遅延を数分の範囲に抑えることができます. しかし、これはバッテリーを消耗し、それについてできることはあまりありません。

于 2012-06-21T16:32:40.067 に答える
1

うまくいかないこともある。それは「リアルタイムでプッシュ通知」「バッテリーの消耗を防ぐ」です。ここで必ず妥協する必要があります。

XMPP を使用するいくつかの Android アプリを試して、永続的な接続、IP アドレスの変更、およびバッテリー消費をどのように処理するかを理解することをお勧めします。オープンソースの場合は、コードを表示して学習することもできます。Yaxim、Project MAXS、Beem などがあります。XEP-0286: XMPP on Mobile Devicesもご覧ください。

そうは言っても、Google が C2DM を提供するとき、車輪を再発明したいですか? このユースケースに最適化されています。多少の遅延があると思いますので、「リアルタイム」ではありません。しかし、繰り返しになりますが、永続的な接続を積極的に確立しようとしてバッテリーを消耗させるソリューションに行き着くか、何らかの遅延(〜0〜30分)を我慢する必要があります。

于 2012-06-21T23:58:42.173 に答える