macos CLLocationManager Promt - PullRequest
       9

macos CLLocationManager Promt

0 голосов
/ 15 января 2019

Я хочу отправить сведения о местоположении, когда push-уведомление получено с сервера. Но приложение macos не запрашивает разрешения на местоположение при запуске. Добавлены все элементы конфиденциальности в info.plist. Он запрашивает разрешение при вызове locationmanager.startUpdatingLocation (). И больше не спрашивает, отменю ли я его. Код приведен ниже.

class AppDelegate: NSObject, NSApplicationDelegate, CLLocationManagerDelegate {
  let locationManager = CLLocationManager()
  func applicationDidFinishLaunching(_ aNotification: Notification) {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
  }
 func scanLocationRequest{
   locationManager.startUpdatingLocation()
   // Call this when a notification receives.
 }
 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let currentLocation = locations.last
    locationManager.stopUpdatingLocation()
    sendLocationReport(currentLocation: currentLocation!)
 }

}

1 Ответ

0 голосов
/ 15 января 2019

Чтобы проверить, есть ли у пользователя доступ к местоположению или нет, используйте следующий код:

var isPermissionAvailable: Bool {
    let status = CLLocationManager.authorizationStatus()
    switch status {
    case .authorizedAlways, .authorizedWhenInUse:
        return true
    case .denied, .restricted, .notDetermined:
        requestForLocation()
        return false
    }
}

func requestForLocation() {

    // Edit
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.startUpdatingLocation()
}

Чтобы показать всплывающее окно при запуске приложения, вы можете использовать следующий код в applicationDidFinishLaunching(_ aNotification:) в AppDelegate классе:

if isPermissionAvailable {
    // Do your work on permission available
}
...