【问题标题】:wake up app by region monitoring or signifiacant location change and start location services通过区域监控或重大位置更改唤醒应用程序并启动位置服务
【发布时间】:2014-05-06 06:55:15
【问题描述】:

我的问题是关于Location Background Services

我有一种情况,我需要我的应用程序在后台持续运行并提供位置更新。即使应用程序是用户/操作系统的quit,我也需要region monitorsignificant location change 来启动我的应用程序,然后切换到location background service 以提供持续更新。

这个功能可以在 iOS 上实现吗?

【问题讨论】:

    标签: ios ios7 core-location


    【解决方案1】:

    在 iOS 中,您可以在 Info.plist 文件中设置位置更新的背景模式,只需添加一个名为“必需背景模式”的键,它是一个数组,并将其项目 0 设置为“应用程序注册位置更新”,这将使您的即使应用程序在后台,应用程序也会继续位置更新。但是对于退出选项,苹果不提供任何此类功能,您可以阅读苹果的文档。

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4

    他们写道:“暂停的应用程序不会执行任何代码,因此无法处理与方向更改、时间更改、偏好更改以及许多其他会影响应用程序外观或状态的通知相关的通知。”

    这意味着一旦我们退出我们的应用程序,它就会处于暂停模式,因此一旦暂停就无法监控位置更新。

    【讨论】:

    • 感谢您的回答,但根据 Apple Docs:注意:如果您的应用程序被用户或系统终止,系统不会在新的位置更新到达时自动重启您的应用程序。用户必须在位置更新恢复交付之前明确地重新启动您的应用程序。 The only way to have your app relaunched automatically is to use region monitoring or the significant-change location service.
    • 我可以启动应用程序,即使它被用户或iOS本身停止,但后台定位服务是否可以在应用程序唤醒后在后台重新启动?
    • 好吧,如果您可以启动应用程序(如果用户/iOS 退出),您可以通过调用 [locationMgr startUpdatingLocation] 启动位置更新;应用程序委托的 applicationDidBecomeActive 委托方法中的方法如下: - (void)applicationDidBecomeActive:(UIApplication *)application{ [locationMgr startUpdatingLocation]; }
    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 2020-08-22
    • 2013-08-15
    • 2012-06-11
    • 2012-03-22
    • 2013-07-04
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多