我想知道我的代码是否被破坏,或者即使是越狱(多任务激活)iPhone 3g可能不支持这个。
我创建一个CLLocationManager,设置委托等等,并告诉它“startMonitoringSignificantLocationChanges”。每当调用该应用程序时,我都会将其记录到textView。但什么都没发生。如果我开车5公里或20公里,那就不行了。
所以我想,好吧,让我们挖一点。我找到了这个API: NSLog(@“位置变更可用:%i \ n”,[CLLocationManager significantLocationChangeMonitoringAvailable]);
可悲的是,它返回零:[
所以,我要问的是:有没有人让它在3G上工作?任何提示?不可能?
答案 0 :(得分:1)
iOS4为核心位置带来两种新的后台模式:startMonitoringSignificantLocationChanges
和startMonitoringForRegion:desiredAccuracy:
使用CLRegion
。
后者仅适用于iPhone 4设备,可能是由于设备中的新GPS硬件。我在Apple开发者论坛上证实了这一点与苹果公司的代表。
但是,我已经在3GS上成功测试了startMonitoringSignificantLocationChanges。我已经在越狱的3G以及香草3G上测试了相同的代码。我认为答案很简单,就是因为缺乏资源,Apple决定不在3G上启用此功能。
启用该功能后,当发生重要位置事件时,您的程序将在后台启动。这种背景多任务处理可能会将3G扩展到极限(在Apple的眼中)。 Apple关于这个主题的文档非常不清楚哪些设备支持什么。它说“称这些方法,并依靠它们返回的东西”。我已经在他们的开发者论坛上发布了我希望他们能够明确哪些设备支持哪些模式。
Apple's "official" documentation for testing for availability
答案 1 :(得分:0)
[CLLocationManager significantLocationChangeMonitoringAvailable]返回0
如果我使用[manager startUpdatingLocation],它确实在后台工作,但是它使用了大量资源。