アプリケーションでGCDAsyncSocketを使用しています。いくつか問題があります。
アプリがバックグラウンドに移行したら、ソケットを閉じるのが好きです。applicationDidEnterBackground呼び出しを一時停止しているときに、次のコードを実行しましたが、ソケットが切断されません。(接続されたホストを介してこれを確認します)
[asyncSocket setDelegate:nil];
[asyncSocket disconnect];
[asyncSocket setDelegate:self];
電話をスタンバイすると、電話をかけてもソケットが閉じません。60秒後、iOSはバックグラウンドにあり、通常の状態に戻ったため、ソケットを閉じますが、送信者は60秒のデータを失いました。APIを正しく使用していない可能性がありますが、問題になる可能性もあります。
参考までに、以下の残りのコード:
初期化
dispatch_queue_t socketQ = dispatch_queue_create("socketQueue", NULL);
asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:socketQ];
if(![asyncSocket connectedPort])
{
if (![asyncSocket acceptOnPort:WIFI_BOX_PORT error:&error])
{
NSLog(@"Problem with opening Port: %@", error);
}
else
{
NSLog(@"Port opened, waiting for connection");
}
}