Расположение Обслуживание всегда возвращают да
-
26-09-2019 - |
Вопрос
Я проверил свое устройство (iPod Touch 2G iOS 4.1), если службы местоположения включены
permitted = [locationManager locationServicesEnabled];
И я всегда получаю да, будь то расположение услуг включена или нет. Я говорю о общей кнопке для сервисов местоположения, а не на кнопку приложения. На iPad с iOS 3.2.2 все работает нормально.
Решение
Когда вы реализуете делегат для менеджера местоположения, вы должны реализовать Didfailwitherror. Там вы получите соответствующую ошибку, если пользователь не позволил доступу к местоположению
Документация Apple Состояния:Если пользователь отрицает использование вашей заявки на использование сервиса местоположения, этот метод сообщает о kCLErrorDenied
ошибка. При получении такой ошибки вы должны остановить службу местоположения.
Другие советы
Помните это [locationManager locationServicesEnabled]
является устарели с IOS 4.0Отказ Используйте метод класса [CLLocationManager locationServicesEnabled]
вместо.
Кнопка «Конкретная приложения» может быть получена
[CLLocationManager authorizationStatus]
Когда вы используете
[CLLocationManager locationServicesEnabled]
Затем вы проверяете, включены ли местоположение в целой системе. Поэтому, когда вы переходите в настройки -> Расположение сервисов, и вы видите, что первый переключатель. Этот метод возвращает состояние этого состояния и не относится к вашему приложению.
Если вам нужно знать, имеет ли ваше приложение доступ к сервисам местоположения @Pascalius Ответ.
Быстрый 3.1 Функция Возврат -> Статус: Bool и сообщение: String
func isLocationEnabled() -> (status: Bool, message: String) {
if CLLocationManager.locationServicesEnabled() {
switch(CLLocationManager.authorizationStatus()) {
case .notDetermined, .restricted, .denied:
return (false,"No access")
case .authorizedAlways, .authorizedWhenInUse:
return(true,"Access")
}
} else {
return(false,"Turn On Location Services to Allow App to Determine Your Location")
}
}
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways))
{
; // app doesn't have access to localization to whatever you want
}
LockationsEvicsEnableSeAndeAndeAndAlebesEnableBEADENALDMANDANEADENATHENALDENALDENALDENALDENALDENALDENALD