我正在尝试制作一个基于位置的应用程序,该应用程序需要在打开后不断更新位置。我一直在寻找一种在应用程序关闭时将位置保留在后台的方法,但我发现这不是最好的方法,因为它会很快耗尽任何 iPhone 的电池电量。
长话短说,我发现“区域监控”,据我所知,它们与 Apple 用于其应用程序“提醒”的相同,后者也适用于位置。然后我使用该选项来测试我的应用程序,我意识到在模拟器中“从不”进入方法“didEnterRegion”,尽管它已正确创建:
-(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 上进行测试,而且我还不想购买它,因为我的应用程序还远未完成,我非常感谢有关此主题的任何帮助。
提前致谢。
最佳答案
我建议进行实际的地面测试。区域监测精度因测试地点不同而有很大差异。
第二种选择是使用区域监控来唤醒应用程序并启动标准定位服务。为此,您需要获得在后台运行该应用程序的权限。苹果可能不会批准这一点。我们的应用使用这种方法被拒绝了。
关于ios - iOS 6 上 "Region Monitoring"的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13984505/