iOS 6 自动暂停不起作用



我以">Session 303-Staying on track from Location Services"WWDC 2012 中的AutoPause为例

在这个例子中,你可以看到自动暂停是如何启用的,有两种方法被称为:

-(void) locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager
-(void) locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager

我已经做了同样的例子,但这些方法并没有被调用过。谁也试过同样的方法?

我现在正在进行实验,以下是我的观察结果:

在iPhone 4上,这根本不起作用。即使将pausesLocationUpdatesAutomatically设置为YES,它也会将pausesDocationUpdatesAutomotically保持为NO(0)。没有警告,这是什么样的API设计反模式!

在iPhone 5上默认情况下,pausesLocationUpdates自动为YES(1)。并调用locationManagerDidPauseLocationUpdates。我运气不好,调用了locationManagerDidResumeLocationUpdates。我也很困惑,如果GPS关闭了,这个怎么叫?一旦用户到达下一个网络小区,它会被调用吗?即使这不是我的经验,它从来没有被调用过。

到目前为止,在我看来,这是iOS6中最不稳定的变化之一。对于所有场景,我可能只会选择pausesLocationUpdatesAutomatically=NO,并希望它在iOS6的所有型号上都能正常工作。

[更新-2013年3月4日]。我查看了苹果在iOS6中的位置更改演示,他们建议在收到区域更改事件后使用区域更改监控来"取消暂停"。尽管这不适合我的场景,因为用户可能会去/跑/开车一两公里,直到发生这样的事件。

我遇到了同样的问题,发现必须将属性pausesLocationUpdatesAutomatically设置为YES

最新更新