2016-03-25 127 views
0

我的應用程序中有GPS記錄功能。在我的應用程序「設置頁面」中有幾個選項可以爲此功能進行配置。但是,此功能取決於啓用的位置服務(在實際的iPhone本身上)。因此,對於可配置的選項,我檢查了locationServicesEnabled(),如果爲false,則禁用設置選項的功能。CLLocationManager.locationServicesEnabled()正在「偵聽」

但是,如果看到我添加的選項「需要啓用位置服務」下方的文本,用戶將最有可能點擊主頁按鈕,進入iPhone設置,啓用位置服務,然後返回到應用程序配置設置。但是,由於我在viewDidAppear()中更改了啓用/禁用選項,因此他們必須離開當前視圖並返回以啓用選項。

因此(在Swift中),有沒有一種簡單的方法來偵聽locationServicesEnabled()上的更改,如果是,執行一個函數,在這種情況下,將重新啓用我的應用程序中的可配置選項。謝謝!

編輯:所以它看起來像我可能能夠使用委託方法CLLocationManagerDelegate,didChangeAuthorizationStatus。這是否是正確的方式去做這件事?

回答

2

您應該創建一個位置管理器的實例,並將它自己設置爲委託。

然後,您應該實施didChangeAuthorizationStatus委託方法。如果用戶授權您的應用使用位置服務,它將被調用。

您可以在每個需要了解此更改的視圖控制器中創建位置管理器的實例,也可以創建自己的類來管理位置管理器的實例(「位置管理器管理器」,如果您願意)。我會讓這個班級成爲一個單身人士。然後,您可以讓位置管理器更改時廣播自定義通知。

我會建議創建一個持有並管理單個位置管理器實例的單例。這就是我通常所做的。

+0

太棒了,謝謝!這聽起來像它會工作。 –