現在、バックグラウンド モードで TCP ソケットから読み取るためのロジックを実装しています。
CFReadStreamRead
関数はソケットからデータを取得するために使用されており、今のところすべて正常に動作しています。
しかし、iPhone OS 4.x がバックグラウンド モードでブロッキング I/O 操作をどのように処理するのか疑問に思っています。例:CFReadStreamRead
関数は、受信データを待機している間、何時間もブロックされる場合があります。
バックグラウンド タスクに 10 分などの公式の制約はありますか? ブロッキング I/O 操作が長時間実行された場合、アプリケーションは iPhone OS によって強制終了されますか?
注意してください -バックグラウンド タスクでブロッキング I/O 関数を実行していません。コード自体はapplicationDidEnterBackground
my のメソッドにありますUIApplicationDelegate
。
アプリケーション自体は、Info.plst ファイルの「voip」パラメータで構成されます + CFReadStream は、Apple の推奨に従ってパラメータで構成されkCFStreamNetworkServiceTypeVoIP
ます。
したがって、基本的にこれは、バックグラウンド モードでの VoIP アプリケーションの通常のシナリオです。
ありがとう!