【问题标题】:Issue in iOS 10 while sending location info to my server whenever my application is in background每当我的应用程序在后台时向我的服务器发送位置信息时,iOS 10 中的问题
【发布时间】:2017-04-11 15:35:43
【问题描述】:

在我的应用程序中,我需要每 2 分钟将我的位置详细信息发送到公开的 Web 服务。我怎么能那样做?当我使用 NSTimer 实现上述操作时,只要应用程序处于后台,定时器就会在 3 分钟内暂停。我尝试过使用 backgroundExpirationHandler,但在一组时间间隔后操作没有执行。有什么建议吗?

注意 - 我也在 info.plist 中添加了“用于位置更新的应用注册”。

【问题讨论】:

  • 你不能“每两分钟”做一次。您可以在“每次获得位置更新时”执行此操作,并且您可以跟踪上次更新服务器的时间,并且仅在距离上次更新超过两分钟时才发送更新。如果设备没有移动或位置覆盖范围很差,那么您可能会在一段时间内无法获得更新。
  • 是否有可能使用 Timer 或 Perform Selector 每 2 分钟执行一次该操作?
  • 不,当您的应用暂停时计时器不会运行

标签: ios nstimer cllocationmanager


【解决方案1】:

首先,您需要在 Capabilities 中添加后台位置更新权限,然后您应该调整位置管理器的以下属性:

self.locationManager.pausesLocationUpdatesAutomatically = NO;
locationManager.distanceFilter // get location callback after device moves to this defined distance
locationManager.desiredAccuracy //according to your requirement

因此,无论何时发生上述任何调整,您都会在委托方法中获得回调。收到后,您可以根据您的位置更新您的应用服务器。

【讨论】:

  • CoreLocation 代表将在那个时候触发。但是由于应用程序处于挂起状态,我是否能够执行诸如调用服务之类的操作以让服务器知道代表中的更新位置?
  • 实际上,即使您的应用程序被终止,您也可以将应用程序设置为通过位置回调启动。但在这种情况下,第 2 条规则将不适用。当指示位置移动 500 米时,您将收到回调。
猜你喜欢
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 2014-01-18
相关资源
最近更新 更多