私はiPhoneアプリでAsyncUDPSocketサードパーティライブラリを使用していますが、ほとんどの場合、それはうまく機能します。AsyncUDPSocket
すべてのネットワークトラフィックに使用するのシングルトンインスタンスがあります。私のアプリはバックグラウンドで位置追跡用に登録されており、バックグラウンドで実行している間、ウェイクアップしてネットワーク経由で位置更新パケットを送信します。これはすべて、次の場合を除いて、バックグラウンド、フォアグラウンド、電話のロックまたはロック解除で大胆に実行されます。
- アプリを起動します
- アプリの設定で位置追跡を無効にします(バックグラウンドでウェイクアップしないようにします)
- ホームボタンを押します(アプリはバックグラウンドになり、ソケットはアプリの残りの部分と一緒に「フリーズドライ」されます)
- 電話をロックする
- 電話のロックを解除する
- アプリを再開
- 追跡を再開して、ソケットから何かを送信してみてください。試してみるとすぐに
SIGPIPE
/EPIPE
エラーが発生し、アプリがクラッシュします。
これに対処する最善の方法は、アプリケーションが終了し、バックグラウンドトラッキングが有効になっていないときはいつでもソケットを閉じて解放することだと思いましたが、試してみると、[socket close]
さまざまなエラーが発生します。私は開発チームにバグを報告しましたが、ここの誰かがエラーを完全に回避する方法、またはソケットを解放せずに存続させる他の方法についてアイデアを与えることができるかどうか疑問に思いました。ありがとう。[socket release]
AsyncUDPSocket
EXC_BAD_ACCESS
SIGPIPE