我一直在 ios 上使用重要的事件位置管理器,但它似乎并不像声称的那样基于单元格更改。
我使用了一个利用重要位置事件的简单应用程序,但我无法从 ios sdk 获得可重复、一致或敏感的响应。
我在下面的 map 上绘制了路线(蓝线)、手机信号塔(位置标记)和 1000 平方米的网格(蓝色方 block )。 map showing route
路线距离为 5000 米。
我开了 3 次。
- 测试 1。收到 2 个 SIG 事件
- 测试 2。没有
- 测试 3。收到 1 个签名事件
在你提示我的测试太小之前,我已经监控其他测试路线好几天了,都显示出不一致的形状。
我原以为 sig 事件是基于基站切换的。所以我使用了一个名为“信号”的越狱应用程序来识别什么是事件单元格。 (注意,令人惊讶的是哪个细胞处于事件状态。这不是我所期望的。)
通过监控“信号”应用程序,细胞从我注意到的情况下切换了大约 6-7 次。
但我没有收到 6-7 个签名事件。所以我看不出细胞切换和重大事件之间有任何关联。
所以我有以下问题
- Q1。什么是重大事件触发因素?
- Q2。为什么结果不可靠/不一致。
- Q3。我怎样才能让我的应用程序接收到 500m 以内一致且敏感的重要事件?
这是在测试应用中运行的代码
-(void)initLocationManager {
if (locationManager == nil) {
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager stopUpdatingLocation];
[locationManager startMonitoringSignificantLocationChanges];
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self initLocationManager];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
NSLog(@"%@", newLocation);
[[NSNotificationCenter defaultCenter]
postNotificationName:@"PositionUpdate" object:nil];
}
-lp
最佳答案
重要的位置更改由 iOS 确定,您无法直接更改其粒度。请注意,只有在 iOS 4 中才使用手机信号塔位置。操作系统的 future 版本将改进这一点。
但作为一种解决方法,您可以在应用程序因位置发生重大变化而被唤醒/启动时打开正常的 CoreLocation 位置更新。然后,一旦您获得了完美的结果,请再次禁用位置监控以允许该应用返回休眠状态。
关于与手机更换无关的 iphone 重要位置事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379521/