【问题标题】:How to handle SignificantLocation change when an iOS app is in suspended state?当 iOS 应用程序处于挂起状态时如何处理重大位置更改?
【发布时间】:2016-10-04 19:05:42
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您想拨打beginBackgroundTaskWithExpirationHandler,然后在您的服务器呼叫完成后拨打endBackgroundTask

    【讨论】:

    • 如果您需要您的应用程序始终监控重要的位置变化,那么不调用“stopMonitoringSignificantLocationChanges”应该没问题。重要的位置更改 API 旨在提高效率。 (它只是偶尔启动 GPS,并使用 WiFi 热点、手机信号塔信息和其他信息来确定您的位置,而无需一直运行 GPS。
    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多