2017-09-06 33 views
0

我正在使用CLLocationManager開發iOS應用程序。ios11 didUpdateLocations不叫

直到ios10,我調用了startUpdatingLocation,然後didUpdateLocations被調用,並且我得到了位置信息。

現在,我更新了iOS11 beta9和Xcode beta6。 我稱爲startUpdatingLocation,但didUpdateLocations未被調用。 所以我不能得到任何位置。

位置是我的應用程序的核心信息。 有沒有人遇到同樣的問題?或者可以解決這個問題? 對不起我的英文不好。謝謝。

+1

你可以添加你的代碼嗎? –

+0

謝謝你的提問。但我解決了這個問題。答案在問題 –

+0

的評論下方,如果您認爲這有助於他人或刪除您的問題,請將實際答案與解決方案一起發佈。 – rmaddy

回答

1

在iOS 11中,在info.plist中添加了新的隱私密鑰,您應該添加其中的任何一個,希望info.plist中的添加爲您工作。

/* 
*  Either the NSLocationAlwaysAndWhenInUseUsageDescription key or both the 
*  NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription 
*  keys must be specified in your Info.plist; otherwise, this method will do 
*  nothing, as your app will be assumed not to support Always authorization. 
*/ 
+0

謝謝!我解決了這個問題。我使用「requestAlwaysAuthorization」獲取權限,但問題出在這裏。我必須使用iOS11的「requestWhenInUseAuthorization」。我修復後,didUpdateLocations被調用。 –

0

添加在Info.plsit

privacy - location usage description 
Privacy - Location When In Use Usage Description 
Application NSLocationAlwaysUsageDescription 

enter image description here

+0

感謝您的回答,但我需要更改如何獲得用戶權限。 –

+0

這三個字符串將顯示彈出窗口以獲取權限。 –

0

我有一個不同的問題。我不小心將該方法聲明爲類方法而不是實例方法。

+ (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations 

而不是

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations 

一旦我改變 「+」 到 「 - 」,一切運行良好。