【问题标题】:Working with location updates when app is terminated应用程序终止时使用位置更新
【发布时间】:2016-04-07 23:22:07
【问题描述】:

我正在做一个项目,我试图在所有状态下获取位置更新,即使应用程序被终止。我已经使用了所有可能的解决方案,但在终止的情况下仍然无法正常工作。现在我想澄清一个疑问 - 我正在将 startUpdatingLocation() 用于前景和背景。我们知道 startMonitoringSignificantLocationChanges() 是在任何位置更新的情况下重新启动应用程序的唯一方法。我们可以在 applicationWillTerminate() 方法中调用“startMonitoringSignificantLocationChanges()”吗?当有任何重要的位置更新时,它会起作用并重新启动应用程序吗?请告诉我。

谢谢!!

【问题讨论】:

    标签: ios location core-location


    【解决方案1】:

    您不能在applicationWillTerminate() 中这样做,因为闭包现在不会返回值。如果您想一直获取用户位置,请尝试后台模式。

    这是 Apple 文档中的描述:

    在这种情况下,传递给应用程序委托的application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions: 方法的选项字典包含键UIApplicationLaunchOptionsLocationKey,以指示您的应用程序是由于位置事件而启动的。重新启动后,您仍必须配置位置管理器对象并调用此方法以继续接收位置事件。当您重新启动位置服务时,当前事件会立即传递给您的代理。此外,即使在您启动位置服务之前,您的位置管理器对象的位置属性也会填充最新的位置对象。

    它清楚地告诉你如何获取位置。

    【讨论】:

    • 使用后台模式,我们只能在前台和后台获取位置更新,而不是在应用程序终止后。对吗?
    • @KKb 后台模式将允许您在应用处于非活动状态时获取位置。
    • @Lumialxk...如果我想在应用程序终止、暂停或终止时更新怎么办?
    • 我不清楚为什么我们在 'applicationWillTerminate()' 方法中调用它时它不起作用,但它在 DidEnterBackground 方法中起作用?
    • @KKb 实际上,当应用被用户或系统杀死时,您不会收到任何通知。即使您收到通知,关闭也不会立即返回值。总而言之,总是终止函数无法工作。进入后台功能不同。你的应用不会在下一秒被杀死,所以会调用闭包。
    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2023-03-11
    • 2016-04-04
    • 2015-05-01
    相关资源
    最近更新 更多