ios - 背景中的Cllocation

时间:2013-08-23 06:49:13

标签: ios notifications cllocationmanager cllocation

我正在开展项目,当用户到达特定地点时,我需要触发通知,甚至在后台应用。做这个的最好方式是什么?

我发现了以下内容。

locationManager = [CLLocationManager new];
[locationManager startUpdatingLocation];

[sharedService.locationManager stopMonitoringSignificantLocationChanges];

[locationManager startMonitoringForRegion:region];

关于startUpdatingLocation我会在3-4分钟后在模拟器和ipod上收到连续通知。 文件说它会耗尽电池,appstore可能不接受,因为这种方法必须由导航类型等应用程序使用。

关于stopMonitoringSignificantLocationChanges文件说它使用的是蜂窝网络。我不确定它是否适用于ipod。我的iPod无法正常工作。这种方法需要SIM卡吗? 这种方法如何运作?我应该走一段距离才能让这种方法得到回应?我旅行了1-2公里,但没有用。

关于startMonitoringForRegion我用了

if([CLLocationManager regionMonitoringEnabled])
        NSLog(@"monitering enable");
    else
        NSLog(@"monitering not avail");

对于Ipod,我得到了monitering not avail。客户也检查了他的iPhone。他也没有得到通知。

请问有人可以解释一下这种方法吗?如果在背景中找到位置的任何其他方式,请告诉。

编辑: 我正在使用startUpdatingLocation。在设备上,它每隔5分钟就会调用didUpdateToLocation方法。它会使用大量电池吗?和appstore会接受吗?

如果我使用startUpdatingLocation将appstore接受应用程序?因为我的需要只是在用户到达特定地点时发出通知。

1 个答案:

答案 0 :(得分:0)

根据您描述的应用要求我认为 - startMonitoringForRegion: 是最好的方法,请看下面的Apple Doc片段......

当用户跨越基于区域的边界时,您可以使用区域监控服务进行通知。区域监控既适用于地理区域(由CLCircularRegion类表示),也适用于信标区域(由CLBeaconRegion类表示)。您可以监视区域以检测指定区域的边界交叉,并使用这些边界交叉执行相关任务。例如,在接近干洗店时,应用程序可以通知用户拿起任何已经脱落的衣服,现在就准备好了。

你的应用程序没有跟踪或路由相关的应用程序,所以我认为使用[locationManager startUpdateLocation]会过度完成。