gpt4 book ai didi

ios - 当用户在应用程序启动区域时,Swift 4 locationManager didEnterRegion 不会触发

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:37 27 4
gpt4 key购买 nike

我正在尝试检测用户是否正在进入我的应用中的特定区域。

如果在应用启动并进入该区域时用户不在特定区域,则此方法工作正常。

但如果应用启动时用户位于特定区域,则不会触发“didEnterRegion”函数。

这是我的代码:

override func viewDidLoad() {
super.viewDidLoad()
self.dbRef = Database.database().reference()
self.mapView.delegate = self
self.initLocationManager()
guard let userLocation = locationManager.location?.coordinate else {return}
self.userLocation = userLocation
let region = MKCoordinateRegion(center: userLocation, latitudinalMeters: 1200, longitudinalMeters: 1200)
mapView.setRegion(region, animated: true)
self.getPlaces { (places) in
self.places = places
self.addAnnotationsToMap(places)
if(CLLocationManager.authorizationStatus() == .authorizedAlways){
if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self){
for place in places{
self.startMonitoring(place)
}
}
}
}
}

func startMonitoring(_ place: Place){
let region = CLCircularRegion(center: place.getCoordinate(), radius: 50, identifier: place.identifier)
region.notifyOnEntry = true
region.notifyOnExit = true
locationManager.startMonitoring(for: region)
}

func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
print("Entered Region : \(region.identifier)")
}

最佳答案

这是预期的行为,顾名思义,它仅在更广泛的区域交叉时触发。如果要确定用户是在区域内还是区域外,请使用 locationManager.requestState(for region: CLRegion) 然后在委托(delegate)函数 locationManager(_:didDetermineState:for :) 中接收结果

要查询所有受监控的区域,请为 locationManager.monitoredRegions 中的每个对象调用 requestState(region)

关于ios - 当用户在应用程序启动区域时,Swift 4 locationManager didEnterRegion 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com