我开发了一个在后台使用地理围栏的 iOS 应用程序。当这样的事件发生时,我想发送一个HTTP请求。如果该请求失败,我想重试几次,并在调用之间延迟几秒钟。我已经使用 UIBackgroundMode
作为“位置”。
我的 NSTimer
计划如下所示:
dispatch_async(dispatch_get_main_queue(), ^{
[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(updateFence:) userInfo:fence repeats:NO];
});
这在前台和“正常”背景下工作正常,但如果应用程序被杀死并由 iOS 启动以进行新的地理围栏事件,则效果不佳。在这种情况下,第一个 http 调用可以工作,但是当我延迟 30 秒启动 NSTimer
时,它永远不会调用目标选择器。
除了 UIBackgroundMode
之外,我还需要使用什么才能在(已杀死的)后台使用 NSTimer
吗?我是否将计时器安排在错误的运行循环/线程上以使该特殊后台模式正常工作?
最佳答案
当它被杀死时,它就被杀死了。计时器不工作 - 故事结束 - 抱歉
备选方案可能是后台应用刷新或静默推送或用户可见的本地通知
关于ios - NSTimer 不会在 KILLED 背景下触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35748438/