首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 6上“区域监控”的准确性

iOS 6上“区域监控”的准确性
EN

Stack Overflow用户
提问于 2012-12-21 12:59:30
回答 7查看 4.8K关注 0票数 3

我正在尝试制作一个基于位置的应用程序,它需要在打开后不断更新位置。我一直在寻找一种在应用程序关闭时将位置保留在后台的方法,但我发现这不是最好的方法,因为它会很快耗尽任何iPhone的电池。

长话短说,据我所知,我发现“区域监控”与苹果应用程序的“提醒”是一样的,这些提醒也可以与位置一起工作。然后我使用这个选项来测试我的应用程序,我意识到在模拟器中“从不”进入方法"didEnterRegion“,尽管它是正确创建的:

代码语言:javascript
复制
-(void) locationManager: (CLLocationManager *) manager didEnterRegion: (CLRegion *) region
 {
     NSLog (@ "entering the region");
     CLLocation * location1 = manager.location;
     CLLocation * location2 = [[CLLocation alloc] initWithLatitude: latitud.doubleValue longitude: longitud.doubleValue];
 }

我终于意识到这个方法被调用了,但只有当我离开了大部分区域并回到该区域时,才表明它不起作用,因为我已经在那个位置(所有这些都在模拟器中),奇怪的是它不是,模拟器的位置离要监控的区域有几英里远!这导致我认为这是准确性的问题,尽管创建半径为50或100米的区域是在传播3或4公里,所以我是无用的。

有没有经历过这种情况的人知道iOS 6模拟器是否有这个错误或者精度问题?我还没有开发者许可证来直接在我的iPhone上测试它,我也不想购买它,因为我的应用程序还远远没有完成,我很感谢在这个话题上的任何帮助。

提前谢谢。

EN

回答 7

Stack Overflow用户

发布于 2013-03-07 03:59:31

我建议做实际的地面测试。根据测试地点的不同,区域监测精度会有很大差异。

第二种选择是使用区域监控,只需唤醒应用程序并启动标准位置服务。要做到这一点,你需要在后台运行应用程序的权限。苹果可能不会批准这一点。我们的应用程序使用这种方法被拒绝了。

票数 2
EN

Stack Overflow用户

发布于 2014-04-14 11:28:24

DidEnterRegion和ExitRegion不是很准确。大约+,- 150m精度。

但是-(空) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)位置非常准确。使用此功能可找出您的区域是否具有坐标/当前位置

代码语言:javascript
复制
CLLocation *currentLocation = [locations lastObject];

 if ([self.ARegionYouSetBeforeHand containsCoordinate:currentLocation.coordinate])
{
 //you arrived at this region!!
}
票数 2
EN

Stack Overflow用户

发布于 2012-12-21 14:35:56

区域监控(通常)的工作基础与“重要位置变化”位置服务相同。也就是说,它使用手机发射塔的位置;Apple建议你通常可以预期精度在1公里左右,但警告说,实际精度将随着你所在地区的手机发射塔密度的不同而不同。您可以在WWDC videos on Core Location中找到有关此主题的更多背景信息。

这可能是可行的--我还没有尝试过--使用区域监控来(唤醒你的应用程序并)获得用户位置的大致猜测,然后在CLLocationManager中使用更高精度的模式来获得更精确的修复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13984505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档