ios - 当 iOS 应用程序处于挂起状态时,如何处理重大位置变化?

标签 ios objective-c swift core-location cllocationmanager

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

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

还有一个问题,如果我不调用stopMonitoringSignificantLocationChanges会有什么问题吗?因为当用户位置发生重大位置变化时,我的应用程序始终需要调用 API。

最佳答案

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

我好像记得你只有大约 30 秒的后台时间,网络调用可能会花费不可预测的时间。

您想调用 beginBackgroundTaskWithExpirationHandler,然后在服务器调用完成后调用 endBackgroundTask

关于ios - 当 iOS 应用程序处于挂起状态时,如何处理重大位置变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635987/

相关文章:

iphone - 使用 Storyboard时如何获取指向 appDelegate 内的 viewController 的指针

ios - 在 Interface Builder 中更改 View 顺序会导致一团糟?

iphone - 如何使用常量解码位图

ios - AVPlayer 无法在 iOS8 上播放来自 NSDocuments 目录的视频

ios - 更改相机声明以避免 .sks 文件

objective-c - 无法使用 NSURLConnection 使 iOS http post 正常工作

ios - iOS8 自定义设计 TabBar

iphone - 多个 View Controller 的方向

ios - 如何让 XLPagerTabStrip 将选定的选项卡居中?

swift - 如何允许用户在 Parse 应用程序中向其他用户发送电子邮件?