在后台运行应用程序,如谷歌纬度
Posted
技术标签:
【中文标题】在后台运行应用程序,如谷歌纬度【英文标题】:Running application in background like google latitude 【发布时间】:2011-08-14 19:18:34 【问题描述】:我现在正在开发一个跟踪用户位置的应用程序。 我希望这个应用程序即使不在任务列表中也能运行(双击主页按钮不显示它)。 与谷歌纬度一样,该应用程序不在后台运行。 我认为这个文档是关于当用户按下主页按钮时正在运行的应用程序:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html
但是如果用户通过双击主页按钮关闭此应用程序怎么办?我知道像谷歌纬度这样的应用程序仍在后台运行。那我该怎么做呢?
【问题讨论】:
【参考方案1】:应用程序能够再次在后台运行,以防它在上次启动时注册了重大位置更改。如果 Google latitude 重新启动应用程序,那么他们会使用以下流程:
-
应用程序启动
检查设备是否可以提供重要的位置变化通知(具有蜂窝数据的设备可以处理这种通知):
significantLocationChangeMonitoringAvailable
注册通知:startMonitoringSignificantLocationChanges
退出应用程序,一旦您的设备离开一个基站到另一个基站,系统就会发送通知,您的应用程序将被唤醒。
有一个问题,没有正常的方法可以从此通知中取消注册。我认为只有为用户提供停止监控的选项。我注意到了这一点,状态栏右上角的箭头表示有人正在使用位置服务。
【讨论】:
【参考方案2】:我可以向您保证,谷歌纵横仅在用户运行时(可见)或作为后台进程运行时(多任务可用时)更新用户的位置。
谷歌纵横正在使用location
后台服务,当应用在后台运行时,该服务使用手机信号塔来确定设备的位置(如您链接的文档中所述)。如果不是正在运行的进程,则 Latitude 应用无法更新位置。
【讨论】:
Latitude 实际上会更新其位置,即使它未运行且不在多任务处理托盘中。我可以向你保证,确实如此。以上是关于在后台运行应用程序,如谷歌纬度的主要内容,如果未能解决你的问题,请参考以下文章