4

フォーラムには Apple の Reachability Class に関するエントリがたくさんあるのを見てきましたが、これに対する解決策は見当たりませんでした。

バックグラウンド モードとリアルタイムで接続の変更を検出する必要がある VoIP アプリを開発しています。SCNetworkReachability API が機能するはずですが、いくつかの問題に直面しています...

まず、Reachability のサンプル コードを Apple (v2.2) からダウンロードしましたが、バックグラウンド モードで動作させることができませんでした。シミュレーターでアプリを起動し、ネットワーク ケーブルを抜き差しするとうまくいきます。しかし、デバイスを試してアプリを起動し、バックグラウンド モードで Wi-Fi を有効/無効にすると、アプリにはまったく通知されません。

info.plist で「アプリケーションがバックグラウンドで実行されない = NO」および「必要なバックグラウンド モード = アプリが Voice over IP サービスを提供する」を設定しましたが、成功しませんでした。このサンプル コードの Donoho バージョンにも同じ問題があります。

2 つ目... 開発中の VoIP アプリ (Linphone ベース) に到達可能性のサンプル コードを統合しました。接続の変更はバックグラウンド モードで検出されます...!!!

それにもかかわらず、常にうまく機能するとは限りません。

  • Wi-Fi をオンにしてアプリを起動すると、バックグラウンド モードであっても、次のすべての到達可能性の変更が検出されます -> OK
  • しかし、wifi をオフにせずにアプリを起動すると、アプリは wifi 回復を検出しません... -> KO

したがって、質問は次のとおりです。

  • Apple Reachability サンプルをバックグラウンド モードで動作させるにはどうすればよいですか?
  • そして... Reachability クラスがバックグラウンド モードで動作しているように見える場合、最初の到達可能性チェックで接続が利用可能であることが判明したときにのみ実際に動作するのはなぜですか?

iOS 5.1.1 を搭載した iPhone4 でアプリを実行しています (iOS バージョン > 5.0 に問題がある可能性があります...??)

私もこのスレッドで指摘された解決策を確認しましたが、到達可能性サンプルの最後のバージョンはすでにその保持/解放の問題を処理しています...

前もって感謝します

4

2 に答える 2

0

私は数日間この問題を回避してきましたが、最終的に問題は NSStreamNetworkServiceTypeVoIp 接続モードと密接に関連しているようです。

中断されたアプリは、リモート サーバーとのアクティブな NSStreamNetworkServiceTypeVoIp 接続を確立した後にのみ、接続の変更をリッスンできるように見えます。

これにより、Reachability サンプルがバックグラウンド モードで接続の変更に応答しない理由 (アプリ内に NSStreamNetworkServiceTypeVoIp 接続がない) と、最初の起動時に wifi がオフになっている場合に voip アプリが応答しない理由が説明されています...

そのため、これには何らかの回避策が必要になるようです...

于 2012-07-05T06:52:00.887 に答える
-1

この到達 可能性は、サンプル コードも付属しているため、役立つ場合があります。

于 2012-07-02T14:22:04.520 に答える