1

アプリケーションで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");
    }
 }
4

0 に答える 0