如何启动由Xamarin iOS中的iBeacon触发的GPS跟踪?

我正在开发一个应用程序,通过跟踪GPSlogging行程。 如果我们从前台开始这个过程 (通过点击“Start Journey”button),一切都在后台工作正常。 现在想法是开始logging这些由iBeacon自动触发的行程。 当iPhone进入一个信标区域,应用程序正在检测到这一点,并调用函数LocationManager.StartUpdatingLocation();

问题:从后台使用iBeacons,我们只能得到10秒的距离,这是我得到从GPS获取位置更新的相同数字。

我所需要的是检测到我在信标区域内,启动GPS并保持运行,并且只在我在该区域外时禁用GPS。

实际上,我们最近也想在我们的一个应用程序中实现这种行为,并发现如果我们在前台启动重要的位置更新( startMonitoringSignificantLocationChanges ),那么我们能够在后台启动常规位置更新( startUpdatingLocationdidEnterRegion实现。

(当然,您的应用程序需要“始终”授权来访问位置服务,并启用“位置更新”背景模式。)

我们的应用程序仍在等待审核,所以无论是“核心位置”的错误还是function,以及苹果是否可以接受,都还有待观察。

不幸的是,你可以在后台使用CoreLocation地理围栏,但是你不能很好地获得精确的GPS更新。 这不是一个Xamarin的东西 – 这是一个iOS的限制。

我写了@RobertN参考了关于扩展背景信号到3分钟的博客文章。 但是我不认为这对你有很大的帮助,因为你想不断地获得GPS更新,苹果公司根本不允许。

我所看到的最好的解释可以延长10秒到3分钟,但这是它…应用程序拒绝是一个连续的后台操作的问题,除非你的应用程序真正被审查为导航应用程序:

第二种方法涉及跟踪背景中的信标,注意其估计的距离,并且仅在信标估计在特定范围内时触发动作。 这种方法在iOS上是有问题的,因为当应用程序在后台时,CoreLocation通常只允许10秒的测距时间。 如果首先在50米处检测到信标,并且一个人以每秒一米的速度接近信标,那么当iOS暂停应用并停止测距时,移动设备仍将离开40米远。

好消息是,可以在iOS上延长背景测距时间。 如果您的应用程序是导航应用程序,则可以在Info.plist的“所需的背景模式”中指定位置更新。 但是这种方式使得AppStore获得批准变得更加困难 – 你必须说服评论者说你的应用正在向用户提供导航服务。 对于许多只需要使用信标在特定距离触发的应用来说,这可能并非如此。

幸运的是,您仍然可以在不需要特殊背景模式的情况下延长背景测距时间 你可以得到的时间是有限的 – 只有三分钟。 但是,每当您的应用在后台被唤醒时,这个时钟就会重新启动,这意味着每次您的应用检测到信标(进入信标区域)或停止看到信标(退出信标区域)时,您可以额外获得三分钟的测距时间。

通过: http : //developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html