目标 c - 重大的位置变化

Posted

技术标签:

【中文标题】目标 c - 重大的位置变化【英文标题】:objective c - significant location changes 【发布时间】:2012-03-11 15:19:46 【问题描述】:

我正在构建一个客户端-服务器应用程序,我需要服务器始终知道当前客户端的位置。 因此,当客户端应用程序处于活动状态时,我使用 CLLocationManager 每 10 分钟获取一次客户端位置并将其发送到服务器。 我的问题是应用程序关闭时该怎么办?我知道我可以在应用关闭时使用重大的位置更改来获取位置更新,但是我可以在不启动应用的情况下将此位置更新发送到我的服务器吗?我的意思是当应用程序关闭时,我希望它对用户透明,这可能吗?当我获得此位置更新之一时,UI 是否会发生某些事情?

【问题讨论】:

如果用户关闭了应用程序,这意味着他不想将他的位置发布到服务器。但是是的,如果它在后台,那么您可以将信息发送到服务器。 据我所知,如果应用程序关闭,重要的位置更改通知工作事件... 是的,你说的是对的,我错过了这一点。 【参考方案1】:

在documentation,他们说

系统会自动将应用程序重新启动到 后台如果有新事件到达,在这种情况下,传递给应用程序的选项字典:didFinishLaunchingWithOptions: 应用程序委托的方法包含键 UIApplicationLaunchOptionsLocationKey 以指示您的应用程序是由于位置事件而启动的。

重新启动后,您仍必须配置位置管理器对象和 调用此方法继续接收位置事件。当你 重新启动位置服务,当前事件被传递到您的 立即委托。此外,您的位置属性 位置管理器对象填充了最近的位置 甚至在您启动定位服务之前就创建对象

您可以在不显示任何 UI 元素的情况下将位置发送到服务器。

【讨论】:

【参考方案2】:

您的应用程序将列在设置区域中并显示位置指示器图标,您可以在这些更新发生时接收和处理(发送到服务器)。查看本教程:http://www.mindsizzlers.com/2011/07/ios-background-location/

【讨论】:

以上是关于目标 c - 重大的位置变化的主要内容,如果未能解决你的问题,请参考以下文章

CLLocationManager 区域监控与重大位置变化

StartUpdatingLocation 与重大变化的位置服务

至少每 15 分钟不会触发重大位置变化

触发重大位置变化更新和给定位置准确性所需的行进距离

重大的位置变化 - 我们有什么保证?

每次 viewWillAppear 发生重大位置变化时调用 didUpdateLocations