2012-03-08 12 views
0

私のアプリはサーバーへの永続接続で接続します。デバイスが現在3Gを使用している場合、3g以上接続します。
問題は、3Gを使用して接続し、無線LANに移動した場合、接続が低下することです。どのように切断されないようにしますか?Android - 無線LAN使用時に3gの接続を維持する方法

答えて

3

サーバーのようなサウンドは、クライアントがシームレスに別のIPアドレスに切り替えることができないか、キープアライブパケットを使用して接続状態を維持している可能性があり、3G接続が切断されるとセッションが切断されます。

これはあなたが支配するものではないかもしれません。 Androidの観点から見ると、デバイスはユーザーの好みに応じてWiFiを優先し、そのどちらも直接コントロールすることはできません。

簡単に言えば、通信プロトコルを変更したり再構成してクライアントIPの変更を即時に変更できない場合は、問題を緩和するためにAndroidで行うことは何もありません。

すべてのモバイルデバイス、およびそれよりも少ない程度でデスクトップ/ラップトップは、ある時点でパブリックIPアドレスを変更するため、バグやサーバー/プロトコル設計の見解が私には聞こえます。


EDIT:

あなたのコメントを受けて、およびUXの利益のために、あなたは3Gに残るためにあなたのアプリ(おそらくはデバイス全体)を強制する方法を見つけることについては非常に注意する必要がありますユーザーがWiFiを使用するように要求したとき。

ほとんどの人がデバイスでデータプランを作成しましたが、実際にデバイスを強制したときにWiFiを使用していると思われる場合(ほとんどの場合無料です。潜在的に非常に高価な3Gデータを使用し続ける

これは、Android環境で表示される妥当な制限を積極的に迂回する可能性が高いため、インストール時に「お金のかかるサービス」として表示されない可能性が高い場合に特に重要です。


EDIT 2:

だから、そこにあなたがそれを行うための方法であってもよいが、それはいつでも変更される可能性があり、サポートされていない、民間のAndroidのAPIに依存していること - いつもの免責事項が適用されます。

hereここで、ConnectivityManagerオブジェクトにアクセスしてモバイルデータを有効にすることができます。

この方法では、Androidソースツリーに対してビルドし、「システム」で共有ユーザーIDを使用する必要がありますが、適切ではないかもしれませんが、これらのAPIは非公開です(アプリケーションはできませんユーザーの操作なしでこれを行います)、それはあなたを助けるかもしれません。

+0

これは必ずしも設計上の問題ではなく、単なるUXの問題です。例えば、あなたのアプリがVoIP呼び出しを行う場合、これは新しい接続とネゴシエーションが確立されるまで呼び出しを中断します。私はいくつかのアプリが3G接続を維持しているという事実を知っています(ちょっとは分かりません:) –

+0

これを行うアプリを特定したら、どうやってそれを理解するのに役立ちますか? – RivieraKid

+0

@inistel、最新の回答をご覧ください。 – RivieraKid

0

これはAndroidの仕組みです。あなたは、永続的な接続を維持すべきではなく、必要なときにのみ接続を開くべきです。

関連する問題