Как определить, говорит ли пользователь, что нет, чтобы использовать мое местоположение по умолчанию?

Возможный дубликат:
   Определение, отказано ли пользователю разрешение CoreLocation

Как я могу узнать, не говорит ли пользователь, что «использовать мое местоположение по умолчанию» в приложении iOS?

Я хотел бы представить их с другим контроллером представления в зависимости от их выбора.

благодаря

4
nl ja de

4 ответы

Для этого вам необходимо реализовать ниже метод делегирования:

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
    if([error code]== kCLErrorDenied)
        self.locationDenied = YES;

        switch ([error code]) {
       //"Don't Allow" on two successive app launches is the same as saying "never allow". The user
       //can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
        case kCLErrorDenied:
            [appDelegate showAllowGPSLocationView];
        default:
            break;
    }

    self.locationDefined = NO;
}

Вы можете создать метод «showAllowGPSLocationView» в AppDelegate. И покажите пользователю, что вам нужно получить доступ к местоположению GPS.

Надеюсь, он решит вашу проблему.

Счастливое кодирование!

4
добавлено
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    if (status == kCLAuthorizationStatusDenied) {
       //denied
    }
    else if (status == kCLAuthorizationStatusAuthorized) {
       //allowed
    }
}

Внедрить CLLocationManagerDelegate делегат Для подробного объяснения см. здесь . Работал для меня. Надеюсь, это поможет.

1
добавлено

Вы можете попробовать, как показано ниже:

 #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_2
    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized))  
 #else 
    if ([CLLocationManager locationServicesEnabled])    
 #endif
1
добавлено

Я сделал для этого функцию, которая решает проблему двумя способами: сначала проверяет, включены ли службы определения местоположения (первая настройка местоположения на устройстве), а вторая проверяет, разрешено ли пользователю ваше приложение.

- (bool)locationAvailable
{
    if (!([CLLocationManager locationServicesEnabled]) || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
        return FALSE;
    else
        return TRUE;
}
1
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.