2014-10-20 60 views
0

我在問這個,因爲我有點困惑。我沒有在我的Info.plist設置NSLocationAlwaysUsageDescription這是我運行代碼:總是在不需要的位置

CLLocationManager *locMan = [[CLLocationManager alloc] init]; 
locMan.delegate = self; 
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedAlways) 
{ 
    [locMan requestAlwaysAuthorization]; 
} 

[locMan startUpdatingLocation]; 

我設置一個斷點,並證實這確實被調用,但我不是在應用程序發出警報。我檢查了我的隱私設置,看到該應用程序有兩個選項:無和總是,沒有檢查。我試圖卸載,清理並重新安裝,但仍然無法正常工作。有任何想法嗎?

編輯: 我搬離viewDidLoad上述塊爲viewDidAppear:,現在警報出現和消失半秒後

回答

1

我解決我的問題的末尾添加這一行。這是一個保留問題。我在本地宣佈我的CLLocationManager,所以當它到達我的方法結束時,它不再存在,這就解釋了爲什麼它不能請求許可。我宣傳它是一個屬性,現在一切正常

+0

地獄,我以爲你已經使它成爲全球... – pankaj 2014-10-20 14:34:08

0

怎麼樣,如果你試試這個:

CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 

if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 
    [locationManager requestWhenInUseAuthorization]; 
} 

[locationManager startUpdatingLocation]; 

對不起,missread您帖子。也許試試這個:

CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; 

if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status == kCLAuthorizationStatusDenied) { 
    // Show alert or something 
} 
else if (status == kCLAuthorizationStatusNotDetermined) { 
    [self.locationManager requestAlwaysAuthorization]; 
} 

更可以在這裏讀到:Core Location Manager Changes in iOS 8

0

你需要在你的代碼

[self.locationManager startUpdatingLocation]; 
+0

我已經添加了該行,並且我得到了相同的結果 – Chris 2014-10-20 14:13:10

+0

嘗試在viewWillAppear中移動這段代碼。 – pankaj 2014-10-20 14:18:00