后台任务iPhone

时间:2011-09-09 21:29:27

标签: iphone objective-c ios core-location

我正在尝试基于计时器在后台实现位置更新。我知道iOS中不同的位置更新方法,并尝试过它们,但它们并不适合需要。我需要经常检查位置,即使没有活动。我尝试过使用计时器但它们不在后台执行。这导致我发现了这个问题How do I get a background location update every n minutes in my iOS application?,它提到了使用

UIApplication:beginBackgroundTaskWithExpirationHandler:

我的问题是你如何使用这种方法?我搜索过苹果文档,但在处理后台执行和位置更新时没有示例,它们会递归地指向对方。

我现在根据我发现的一些例子获得此代码:

- (void)applicationDidEnterBackground:(UIApplication *)application
{    
    locationUpdater=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:locationUpdater];
        locationUpdater=UIBackgroundTaskInvalid;
    } ];
}

我已在.plist中为支持的后台模式添加了关键“位置”

添加这个只是保证我的应用程序不会被杀死一段时间,所以我可以保持计时器运行吗?或者我在哪里添加在后台模式下执行的方法。

2 个答案:

答案 0 :(得分:1)

如果您的后台任务运行时间超过10分钟,您的应用将被终止。

您确实应该使用os位置服务来获取有关位置更改的通知。为什么这还不够?如果位置没有改变,反复检索它的重点是什么,一旦改变,你就会收到通知。

答案 1 :(得分:0)

对于概念性理解,请查看here

有关准确性的详细分析,您可以访问this

您应该开始使用startMonitoringSignificantLocationChanges。您可以找到示例代码参考here