Первый раз, когда я устанавливаю свое приложение iOS на устройство с помощью xcode и службы определения местоположения, служба requestAlwaysAuthorization () показывает «Включить службы определения местоположения», которые подталкивают пользователя к настройкам устройства, чтобы включить службу определения местоположения, затем пользователь возвращается к приложение и будет видеть предупреждение «разрешение» (с тремя вариантами всегда, при использовании и никогда). Если пользователь нажимает на параметр всегда, затем полностью закрывает приложение и отключает службу определения местоположения, а затем снова открывает приложение, предупреждение «Включить службы определения местоположения» не отображается. Это мой код:
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
NotificationCenter.default.addObserver(self, selector: #selector(checkLocationService), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
}
@objc func checkLocationService() {
if CLLocationManager.locationServicesEnabled() {
switch CLLocationManager.authorizationStatus() {
case .denied, .notDetermined, .restricted:
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
case .authorizedWhenInUse, .authorizedAlways:
...
}
} else {
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
}
}
Я добавил все три ключа местоположения в Info.plist:
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>My app need your location to work</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>My app need your location to work</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>My app need your location to work</string>
Я тестирую на iOS 11 и 12 и не знаю, что не так.