2012-10-16 92 views
2

我已經跟隨AutoPause的例子來自「會話303 - 從位置服務停留在軌道」 WWDC 2012的iOS 6 AutoPause不起作用

在這個例子中,你可以看到AutoPause如何啓用,並且有兩種方法被稱爲:

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

我已經做了同樣的例子,但這些方法都不能永遠不會被調用。 誰試過了?

回答

1

我有同樣的問題,發現你必須設置該屬性pausesLocationUpdatesAutomaticallyYES

5

我與正確的實驗現在在這裏是我的意見:

在iPhone 4,即根本不工作。即使您將pausesLocationUpdatesAutomatically設置爲YES,它也會將pausesLocationUpdatesAutomatically保持爲NO(0)。沒有警告,這是什麼樣的API設計反模式!

On iPhone 5 pausesLocationUpdates默認爲YES(1)。並調用locationManagerDidPauseLocationUpdates。我在調用locationManagerDidResumeLocationUpdates時運氣不好。我也很疑惑,如果GPS關閉,這將如何被調用?一旦用戶到達下一個網絡單元,它會被調用嗎?即使這不是我的經驗,它從來沒有被稱爲。

到目前爲止,我認爲這是iOS6中最不一致的變化之一。我可能會在所有情況下僅使用pausesLocationUpdatesAutomatically = NO,並希望在使用iOS6的所有型號上都能正常工作。

[更新 - 2013年3月4日]。我瀏覽了蘋果的演示文稿,瞭解iOS6中的位置更改,並且他們建議在發生區域更改事件後使用區域更改監視功能來「暫停」。雖然這不適合我的情況,因爲用戶可能會去/運行/開車一兩公里或兩個直到發生這樣的事件。

+0

如果您嘗試在iOS 5上分配pausesLocationUpdatesAutomatically = yes,它會崩潰。 – mskw

+0

以上是肯定的,你必須在使用此屬性之前通過respondsToSelector進行檢查。 –

+2

它適用於我的iPhone 4(iOS6)。當我開始移動時,GPS暫停但不會恢復。 – Lukasz