Я пытаюсь определить, находится ли пользователь рядом или входит в мое нужное местоположение. Я использую CLLocationManager
для мониторинга этого действия, но по какой-то причине оно не работает. Я нахожусь в текущем местоположении, но didEnterRegion
не вызывается. Вот мой код:
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
let center = CLLocationCoordinate2D(latitude: lat, longitude: long)
if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
// Register the region.
let maxDistance = locationManager.maximumRegionMonitoringDistance
let region = CLCircularRegion(center: center,
radius: maxDistance, identifier: "identifier")
region.notifyOnEntry = true
region.notifyOnExit = false
locationManager.startMonitoring(for: region)
}
}
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
if region is CLCircularRegion {
print("entered....")
}
}
Я также добавил описания конфиденциальности в plist-файле:
Как я могу решить эту проблему?
Отредактировано :
requestState(for region:)
и didDetermineState:for:
работают сейчас, но как я могу проверить, находится ли пользователь рядом или в этом месте? например, если пользователь находится рядом или в регионе, что-то сделать, а если нет, сделать что-то еще.
Отредактировано 2
let center = CLLocationCoordinate2D(latitude: lat, longitude: long)
let region = CLCircularRegion(center: center, radius: 1000, identifier: "Store")
let controller = LocationController()
controller.requestWhenInUseAuthorization()
controller.requestState(for: region) { (state) in
switch state {
case .inside:
print("inside region")
case .outside:
print("outside region")
case .unknown:
print("unknown")
}
}