iphone - 停止在应用程序进入前台后调用setKeepAliveTimeout处理程序吗?

标签 iphone ios cocoa-touch appdelegate

对于VOIP应用程序,我们使用setKeepAliveTimeout每10分钟向服务器发送一次PING数据包,一切正常,但是我不确定一旦应用程序成为前台,如何阻止处理程序被调用。

例如:这是我设置超时的方式

 [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }];

后台处理程序:
- (void)backgroundHandler
{
    printf("10 minute time elapsed\n");
    // do some action...
}

即使在应用程序出现在前台之后,上述函数也被调用,我已经阅读了Apple文档中的设置处理程序nil使其停止。我已经在applicationWillEnterForeground中尝试过如下
[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:nil];

我还是每10分钟接到一次电话。如何处理,我是否只需要使用标志。

任何帮助都非常感谢。

最佳答案

您必须调用clearKeepAliveTimeout来停止计时器。 setKeepAliveTimeout:旨在保持voip连接,因此才定期调用它。

关于iphone - 停止在应用程序进入前台后调用setKeepAliveTimeout处理程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606492/

相关文章:

ios - 在 iOS 中,如何区分触觉触摸和长按?

iphone - UIKit 状态保存不恢复滚动偏移

iphone - 通过异步服务器调用删除 iPhone 表行的正确行为是什么?

ios - 无法摆脱 "Splitview controller is expected to have a view controller at index 0 before it' s used"在 iOS6 中的错误

ios - setNeedsDisplayInRect 在 drawLayer :inContext: 期间调用

iphone - 在 Objective-C 中委托(delegate)为外部类

ios - 将新的 xib 连接到继承自 UIView 的类

ios - 无法安装 iOS 模拟器 8.4

ios - 用atos符号化

iOS NSDate 和 NSManagedObject