如何在iOS应用程序处于挂起状态时处理SignificantLocation更改?

时间:2016-06-04 23:25:39

标签: ios objective-c swift core-location cllocationmanager

在我的应用中,我需要在用户位置发生重大变化时调用API服务。所以我使用startMonitoringSignificantLocationChanges方法并在corelocationdelegate方法(locationManagerdidUpdateLocations)中处理API调用。当应用处于后台或活动状态时,我可以毫不犹豫地调用API。

当应用处于暂停状态时,问题就出现了。我知道当HIGHantLocationChange触发iOS唤醒时终止的应用程序会给手动重启位置服务和处理位置数据提供少量时间,在这种情况下我们会回调委托方法,是否需要使用后台任务来调用API或API调用应该像以前一样(作为活动状态)。目前,API调用大约需要6-7秒。如果超过10秒,我该如何处理API调用?

还有一个问题,如果我不调用stopMonitoringSignificantLocationChanges有什么问题吗?因为我的应用程序总是需要在用户位置发生重大位置更改时调用API。

1 个答案:

答案 0 :(得分:1)

当你说“......我需要调用API服务......”你是在谈论对服务器进行网络呼叫吗?如果是,那么是的,你应该要求背景时间。

我似乎记得你只有大约30秒的背景时间,网络通话可能会花费不可预测的时间。

您希望拨打电话beginBackgroundTaskWithExpirationHandler,然后在服务器通话完成后拨打endBackgroundTask