Как я могу проверить, находится ли пользователь в правильном регионе, нажав кнопку? стриж - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю с Core Location и Monitoring близостью пользователя. Мой мониторинг работает хорошо, но я хочу проверить, нажимает ли пользователь кнопку checkIn, проверяет, находится ли он в правильном месте. Я думал подключить кнопку к моей функции didEnterRegion и получить сообщение о том, что вы находитесь в этом месте. Это мой код для мониторинга и didEnterRegion.

    @IBAction func checkIn(_ sender: UIButton) {

     if inSidePlace == true {
        print("You are in the correct place")
    } else {
        print("You are not in the correct place")
    }

}

    func monitorRegionAtLocation(center: CLLocationCoordinate2D, identifier: String) {

    //Here we need to check if is always or only when Using app.... doesn't make sense when using app for remote notifications if CLLocationManager.authorizationStatus() == .authorizedAlways {
        if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
            // Register the region.
            let region = CLCircularRegion(center: center,
                                          radius: 20, identifier: identifier)
            region.notifyOnExit = true
            region.notifyOnEntry = true

            let circle = MKCircle(center: center, radius: region.radius)
            mapView.add(circle)
            locationManager.startMonitoring(for: region)
    }
  }
}
    func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {

    if let region = region as? CLCircularRegion {
        let identifier = region.identifier
        print("You are IN: " + identifier)

        let title = "You entered the region!"
        let message = "You are in the correct place!"
        showAlert(title: title, message: message )
        showNotification(title: title, message: message)
        //If is possible to connect the button here so when user pressed it we can at least show the identifier
    }
}

func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {

    if let region = region as? CLCircularRegion {
        let identifier = region.identifier
        print("You are NOT: " + identifier)

        let title = "You left the region!"
        let message = "You are not in the correct place!"
        showAlert(title: title, message: message)
        showNotification(title: title, message: message)


    }
}

Любая дополнительная информация, дайте мне знать. Спасибо

1 Ответ

0 голосов
/ 18 сентября 2018

Возможно, у вас есть простая переменная экземпляра, которая отслеживает, вошел ли человек в регион?

//Your instance var:
var isInsideRegion = false


func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {

    if let region = region as? CLCircularRegion {
        self.isInsideRegion = true  //update the instance variable here
        let identifier = region.identifier
    }
}

@IBAction func checkIn(_ sender: UIButton) {

if self.isInsideRegion {
    let title = "You entered the region!"
    let message = "You are in the correct place!"
    showAlert(title: title, message: message )
    showNotification(title: title, message: message)
}

}

...