2012-03-26 5 views
1

バックグラウンドでバックグラウンドで動作するバックグラウンドcocoaasyncsocketソケットがあります。数分後にバックグラウンドソケットでリッスンするSIGSTOP

//DELEGATE 
- (void) socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag 
{ 
    self.i += 1; 
    NSLog(@"didReadData %d %@", self.i, [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
    [self.asyncSocket readDataWithTimeout:-1 tag:0]; 

} 

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port 
{ 
    NSLog(@"socket:%p didConnectToHost:%@ port:%hu", sock, host, port); 

    [self.asyncSocket performBlock:^{ 
     [self.asyncSocket enableBackgroundingOnSocket]; 
    }]; 

    [self.asyncSocket readDataWithTimeout:-1 tag:0]; 

} 

//.plist

<key>UIBackgroundModes</key> 
<array> 
    <string>voip</string> 
</array> 

それは私がSIGSTOPやアプリ "クラッシュ" を取得あとがき最初の3分間正常に動作します。なぜなのかご存知ですか?

+0

本当にクラッシュするのですか、何もしないだけですか? – mringwal

+0

問題が見つかりましたか?私はxCode 4.3.2にアップグレードする前に正常に動作したアプリケーションで同様の問題があります。 – alinoz

答えて

6

オーガナイザの理由を確認できます(XCodeの[ウィンドウ] - [オーガナイザ] - > [iOSデバイス] - > [デバイスログ] - >アプリケーション)をクリックしてください。

私のケースでは、このようなものだった:それは、あなたのアプリが300秒に起床することができ回数には制限があることが判明した

Application Specific Information: 
BKUnsuspendLimit MyApp[5168] exceeded 15 wakes in 300 sec 

+0

時には、最も簡単なアドバイスが最適です。私はあなたに+1以上を与えることができれば幸いです。 –

+0

この情報はまだ関連しており、非常に役立ちます。私は、iOS 8.4ではすぐにsocket.ioソケットを使用していて、ソケットをvoipソケットとして開いています。デバイスログは、ウィンドウ>デバイス>左側のデバイス>デバイスログの表示にあります。 BKUnsuspendLimit が300秒で15回を超えました。確かに私のアプリを殺しているthats。 – Pljeskavica