在Objective-C中调用委托函数

时间:2013-01-28 03:06:49

标签: ios objective-c

在我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呼叫之后,它似乎停止工作。

我该怎么称呼?

1 个答案:

答案 0 :(得分:0)

很明显,您不会收到任何数据包,因为当您锁定设备时,应用程序进入后台模式,而在后台模式下,您的应用程序无法接收来自互联网的任何数据包。您的问题有两种解决方案:

  1. 您必须使用数据包确认方法维护客户端 - 服务器数据包的发送/接收。当应用程序到达后台时,您的应用程序将不会将ack发送到服务器,因此服务器知道在应用程序再次请求后发送数据。要让应用再次发送请求,请在applicationDidBecomeActive

  2. 中再次发出请求
  3. 此方法仅在您的应用具有以下类型时才有效 -

    • 音乐播放器应用
    • 导航应用
    • VoIP App
    • 报亭应用
    • 带外部附件的应用程序
  4. 在这种情况下,您的应用即使在后台也可以发送/接收数据。有关详细信息,请查看此link