私は、GCDAsyncSocket、GCDAsyncUdpSocket、および NSNetService を使用して P2P VoIP アプリケーションを実行し、ネットワーク上のアプリケーションを使用して他のデバイスを見つけています。ユーザーデータを転送し、UDP 接続をネゴシエートするための TCP ソケットがあります。
アプリがバックグラウンドにある間、Bonjour を発行する際に NSNetService サービスを維持し、他のデバイスからの要求を受信するためにソケットを開いたままにしておく必要があります。
iPhone の HOME ボタンを押しても、ソケットは切断されずに応答せず、アプリを再度開いたときにのみデータがアプリケーションに送信されます。画面をブロックすることで、ソケットが閉じられます。
アプリケーションが閉じられたときに公開する NSNetService。
バックグラウンド VoIP アプリ、音声などのオプションを有効にしました。
使った
[ asyncSocket performBlock : ^ {
[ asyncSocket enableBackgroundingOnSocket ];
}];
iPhoneがロックされているときにSocketとNSNetServiceを機能させ続ける方法を誰かが知っていますか?