使用CLLocation,您如何从检查用户在前台的位置到每隔5分钟在后台检查一次呢?

问题描述

当前,我正在检查/更新用户在打开应用程序时通过CLLocation坐标对用户的位置进行firebase,然后立即通过manager.stopUpdatingLocation()结束“更新”。如果我拿走了manager.stopUpdatingLocation(),位置会更新every second。取而代之的是,我希望该位置在后台检查/更新,即使用户退出every 5 minutes我猜这应该在App Delegate中完成。

下面是我检查/更新前台位置的方法(每秒钟不停止管理器,一次停止管理器。

func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation])   {
    
    let databaseRef = Database.database().reference()
    guard let uid = Auth.auth().currentUser?.uid else { return }
    guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
    print("locations = \(locValue.latitude) \(locValue.longitude)")
    latestLocation = ["latitude" : locValue.latitude,"longitude" : locValue.longitude]
    let lat = locValue.latitude
    let lon = locValue.longitude
    dict = CLLocation(latitude: lat,longitude: lon)
    print("dict",dict)
    
    
    if let locationDictionary = latestLocation {
        databaseRef.child("people").child(uid).child("Coordinates").setValue(locationDictionary)
        
    
        
    }
    manager.stopUpdatingLocation()

}

...

override func viewDidLoad() {
    super.viewDidLoad()
        locationManager.delegate = self
    
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.distanceFilter = kCLdistanceFilterNone
    locationManager.startMonitoringSignificantLocationChanges()
    locationManager.startUpdatingLocation()
    
    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.requestWhenInUseAuthorization()
    
    
    if CLLocationManager.locationServicesEnabled() {
        
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
        locationManager.startUpdatingLocation()
        
        
    }
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...