フォーラムには 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 に問題がある可能性があります...??)
私もこのスレッドで指摘された解決策を確認しましたが、到達可能性サンプルの最後のバージョンはすでにその保持/解放の問題を処理しています...
前もって感謝します