不断跟踪iOS上的用户位置



我需要不断监视用户的位置,以便在他靠近有趣的事情时通知他。实现这一目标的正确方法是正确的?

我无法保持计时器在后台运行(要定期更新用户在服务器上的位置),我还读到,即使应用程序不运行,订阅重大位置更改也可能会使我接收位置更新,但我无法实现。我在正确的道路上吗?还有其他选择吗?

编辑 - 有一个必要的我应该暴露的,这可能使我放弃了对真正问题的关注:

  • 用户周围的有趣的"东西"没有固定位置,因此在发送推动之前,我必须确保用户当前是该位置的分钟)。

您可以在下面的VC中设置监视位置的东西

在viewdidload方法中,请执行以下

CLLocationManager locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;(Accuracy according to your need)
[locationManager startUpdatingLocation];

您必须在两个可选的委托方法下覆盖cllocationmanagerdelegate协议

ios6

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{}

和iOS 2至6

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

在这些方法中,您将获得更新的位置。根据需要使用它。每次更新这些方法的位置都会收到呼叫。

您需要的是地理申请。在iOS中,它称为"区域监视"。您可以从CLLocationManager指南中的startMonitoringForRegion:开始。更多详细信息是在区域监视指南中

在iOS中,与您的应用程序相关的区域始终跟踪,包括当您的应用不运行时。如果在不运行应用程序时越过区域边界,则将该应用重新启动到背景中以处理事件。同样,如果在事件发生时暂停该应用程序,则将其唤醒,并给予很短的时间(约10秒)来处理事件。

据我所知,

当应用程序在后台运行或不通过系统暂停(终止)时,更改当前位置的唯一更改位置更新是唯一的方法。发生这种情况时,请务必检查UiapplicationLaunchOptionsLocationKey和初始化CllocationManager以处理位置更改通知。如果该应用在前景中运行,那是简单的情况。

顺便说一句,为了让系统继续将位置更新到您的应用程序,您必须启用项目的映射功能和背景模式(位置更新)。

阅读Apple位置/地图文档以获取更多详细信息。

免责声明:我为cintric

工作

我们在Cintric上也有类似的问题,实际上是为此目的制作的工具。即使在应用程序退出后,它也会跟踪背景中的位置,也只使用1%的电池!

您可以下载.framework文件,将其拖动到您的项目中,然后用一行代码初始化: [CintricFind initWithApiKey:@"YOUR_API_KEY_HERE" andSecret:@"YOUR_SECRET_HERE"];

您可以免费获得API密钥。

这里有文档:https://www.cintric.com/docs/ios

还有一篇博客文章在这里进一步说明:http://www.blog.cintric.com/?p=121

最新更新