1

で作成しているiOSアプリにはXCode、メイン インターフェイスと関数デリゲートがあります。

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port
{
    NSString *infoString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];     
    return NO;
}

..そして、この関数を使用して着信パケットをリッスンしています。初めて期待どおりに実行されますが、デバイスのロック/ロック解除シーケンスの後、つまりapplicationWillEnterForeground呼び出しの後、動作を停止したようです。

どうすれば呼び出せますか?

4

1 に答える 1

0

デバイスをロックするとアプリがバックグラウンドモードになり、バックグラウンドモードではアプリがインターネットからデータパケットを受信できないため、パケットを受信しないことは明らかです。問題の解決策は2つあります。

  1. パケット確認方式を使用して、クライアント/サーバーパケットの送受信を維持する必要があります。アプリがバックグラウンドに達すると、アプリはackをサーバーに送信しないため、アプリが再度リクエストすると、サーバーはデータの送信元を認識します。アプリがリクエストを再度送信するには、で再度リクエストを行いapplicationDidBecomeActiveます。

  2. このアプローチは、アプリが次のタイプの場合にのみ機能します-

    • 音楽プレーヤーアプリ
    • ナビゲーションアプリ
    • VoIPアプリ
    • ニューススタンドアプリ
    • 外部アクセサリを備えたアプリ

この場合、アプリはバックグラウンドでもデータを送受信できます。詳細については、このリンクをご覧ください

于 2013-01-28T04:01:25.027 に答える