我希望24x7次获取设备的位置。但根据苹果文档,应用程序最多只能运行10分钟。之后,应用程序将自动被杀死。 我使用以下代码:
- (void)applicationWillResignActive:(UIApplication *)application
{
UIApplication * app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler: ^ {
dispatch_async (dispatch_get_main_queue (), ^ {
if (bgTask != UIBackgroundTaskInvalid)
{
[app endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
// Start the long-running task and return immediately.
dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
lm.locationManager.distanceFilter = kCLDistanceFilterNone;
lm.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[lm.locationManager startMonitoringSignificantLocationChanges];
[lm.locationManager startUpdatingLocation];
dispatch_async (dispatch_get_main_queue (), ^ {
if (bgTask != UIBackgroundTaskInvalid) {
[app endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
});
}
我还将支持的后台模式包括为需要位置。
但该应用只运行了10分钟。如何让应用程序一直运行。请帮帮我!
答案 0 :(得分:2)
significantLocationChanges
不要求您实施后台任务。只需删除bgtask创建并使用Supported Background Mode键正常运行它。
预定的BackgroundTasks在10分钟后被OS杀死,因此您的位置服务监控。所以你只需要删除你为位置更新创建的BGTask。