2015-12-16 63 views
1

我想要求用戶啓用常規位置服務(而不是特定於應用的位置服務),如果作爲一個整體,他們從未提示爲應用啓用它。提示使用普通iOS位置服務

有沒有辦法提示用戶每次打開應用程序時都會打開位置服務並將其禁用?

代碼在其他線程發現,但它是應用特定的,不是一般的定位服務:

if(![CLLocationManager locationServicesEnabled]) { 
    NSLog(@"Location Services is OFF GLOBALLY"); 

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Location Services", @"") message:NSLocalizedString(@"Please Set Location Services to On and Restart App\n\nSettings->Privacy->Location Services", @"") preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:nil]; 

    [alertController addAction:okAction]; 

    [self presentViewController:alertController animated:YES completion:nil]; 


} 
else if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { 
    NSLog(@"Location Services is Never for App"); 

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"App Needs Location Services", @"") message:NSLocalizedString(@"Please Set Location Services to Always for App", @"") preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Settings", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 

    [alertController addAction:settingsAction]; 

    [self presentViewController:alertController animated:YES completion:nil]; 

} 
+2

爲什麼?您只需要特定於應用程序的設置。 – rmaddy

+0

也許如果你分享你真正想要完成的事情,我們可以提供更好的幫助,因爲沒有理由提醒用戶完全啓用定位服務,如果你的應用程序不會要求使用它的權限。 – RyanR

+1

您可以檢查「CLLocationManager.locationServicesEnabled」的值,並在停用位置服務時顯示警報,但無法直接打開位置服務首選項。 – Paulw11

回答

1

在你info.plist文件,你要包括下列行之一:

如果它總是在使用中,那麼這個條目添加到info.plist

NSLocationAlwaysUsageDescription 

與該項目相關的字符串應該是你的消息w ^螞蟻顯示:`你想使連續定位監控,即使這個程序是不使用「

......或者......

你可以做NSLocationWhenInUseUsageDescription和線沿線的一個消息,」你願意讓位置監控,只有當這個應用程序在使用?」

Here's documentation covering this topic

+0

更新的原帖更多代碼 – lr100