Основная локация StartMonitoring Фоновая работа - PullRequest
1 голос
/ 20 апреля 2020

Я могу сканировать маяки, когда приложение работает на переднем плане, но не может работать с приложением в фоновом режиме. Я добавил «Конфиденциальность - Местоположение всегда и когда используется описание использования» и «Конфиденциальность - Местоположение когда используется описание использования» в İnfo.plist и фоновые режимы «Обновления местоположения»

func initScanBeacon() {

    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.requestAlwaysAuthorization()
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.pausesLocationUpdatesAutomatically = false

  }

  func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
    if status == .authorizedAlways {

      if CLLocationManager.isMonitoringAvailable(for: CLBeaconRegion.self) {
        if CLLocationManager.isRangingAvailable() {
          startScanning()
        }
      }
    }
  }

  func startScanning() {
    let uuid = UUID(uuidString: "xxxxx")!
    let beaconRegion = CLBeaconRegion(proximityUUID: uuid, major: 0, minor: 0, identifier: "xxxxx")

    locationManager.startMonitoring(for: beaconRegion)
    locationManager.startRangingBeacons(in: beaconRegion)
  }

  func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
    if beacons.count > 0 {
      //print
    } else {

    }
  }

1 Ответ

0 голосов
/ 20 апреля 2020

По умолчанию iOS приложения не будут продолжать использовать маяки более нескольких секунд после переключения на фон. Это верно, даже если вы получаете «всегда» разрешение на использование местоположения от пользователя и задаете locationManager.allowsBackgroundLocationUpdates = true.

Есть несколько приемов, которые вы можете сделать, чтобы продлить фон более чем на несколько секунд. Подробности см. В моем подробном ответе здесь

...