2011-08-14 14 views
2

我现在正在跟踪用户位置的应用程序。 即使它不在任务列表中,我也希望此应用程序能够运行(双击home按钮不会显示它)。 与谷歌纬度一样,该应用程序未在后台运行。 我认为这篇文档是关于当用户按下主页按钮时运行应用程序:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html在像google纬度一样的背景中运行应用程序

但是如果用户通过双击主页按钮关闭此应用程序会怎么样?我知道Google纬度等应用程序仍在后台运行。所以我该怎么做?

回答

2

应用程序能够再次运行在后台如果它在上次启动时注册了重大位置更改。如果谷歌纬度启动应用程序恢复,比他们用这个流程:

  1. 应用程序启动
  2. 检查设备能够提供显著位置变更通知(蜂窝网络数据的设备可以处理这种类型的通知):significantLocationChangeMonitoringAvailable
  3. 注册通知:startMonitoringSignificantLocationChanges
  4. 退出应用程序,只要您的设备将离开一个手机塔到另一个,系统会发送通知,您的应用程序将被唤醒。

有一个问题,没有正常的方式来取消注册此通知。我认为只有通过向用户提供停止监视的选项。我注意到了这一点,通过状态栏右上角的箭头,这意味着某人正在使用位置服务。

0

我可以向您保证,谷歌纵横仅在用户的位置正在运行(并可见)或其作为后台进程运行时(多任务可用时)更新用户的位置。

谷歌的纬度正在使用location后台服务,该服务使用手机信号塔来确定应用程序在后台运行时的位置(如链接的文档中所述)。如果Latitude应用不是正在运行的进程,则无法更新该位置。

+0

纬度实际上更新它的位置,即使它没有运行并且它不在多任务托盘中。我可以向你保证它确实如此。 –

相关问题