2016-01-27 41 views
0

我正在開發一個簡單的iOS應用程序,它獲取用戶的位置並顯示位置。我需要設置此應用程序的目標是iOS 7.0及更高版本,因此iPhone 4用戶可以使用此應用程序。然而,當我設置 Deployment Target7.0我得到生成錯誤說:self.locationManager.requestAlwaysAuthorization()僅適用於iOS 8.0或更新 - Swift

/Users/toing_toing/dev/xyz/HomePageViewController.swift:35:30: 'requestAlwaysAuthorization()' 僅適用於的iOS 8.0或更高版本

它來源於此行:

self.locationManager.requestAlwaysAuthorization() 

我需要的應用程序訪問GPS所有的時間的時刻,但我不能找到一個替換代碼爲此將修復部署目標錯誤。我能做什麼?

+1

的iOS 8之前,開始在更新的LocationManager如果沒有同意給予併產生對用戶的請求。此外,不同類型的位置權限之間沒有區別。 – SmokeDispenser

回答

1

只需使用self.locationManager.startUpdatingLocation()

var authorizationStatus = CLLocationManager.authorizationStatus() 
if (authorizationStatus == .AuthorizedWhenInUse || authorizationStatus == .AuthorizedAlways { 
    locationManager.startUpdatingLocation() 
}else if self.locationManager.respondsToSelector(Selector("requestAlwaysAuthorization")) { 
    self.locationManager.requestAlwaysAuthorization() 
}else { 
    locationManager.startUpdatingLocation() 
} 

+1

實際上,在iOS 8+上,您不應該在成功授權之前開始更新。因此,將'locationManager.startUpdatingLocation()'包裝在'else'中。 – SmokeDispenser

+0

@JanGreve我的答案更新,TNX –

+0

我用'如果#available(的iOS 8.0,*){ self.locationManager.requestAlwaysAuthorization() }其他{ locationManager.startUpdatingLocation() }' ,它解決了問題,顯然這是對xcode這個問題的建議修復,但我沒有注意到它! 你的答案仍然會給出錯誤。但是,非常感謝幫助:) –

相關問題