0

我想 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;
        }
    });
});
}

我还将支持的背景模式包括为Requires location

但该应用程序仅运行 10 分钟。我怎样才能让应用程序一直运行。请帮帮我!

4

1 回答 1

2

significantLocationChanges不需要您执行后台任务。只需删除 bgtask 创建并使用 Supported Background Mode 键正常运行它。

计划的 BackgroundTasks 大约在 10 分钟后被操作系统杀死,因此您的位置服务监控。所以你只需要删除你为位置更新创建的 BGTask。

于 2013-04-24T07:37:33.640 回答