当应用处于后台或被杀死状态时,如何找到用户位置?

问题描述 投票:0回答:1

当我的应用处于后台或被杀死状态时,我想获得一个新位置。我搜索了很多,并在Apple doc中找到了方法。当app处于后台或被杀死状态时,startMonitoringSignificantLocationChanges()用于更新位置。但是当我尝试这种方法时,没有得到处于被杀死状态的位置。这是我的代码:

override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.requestAlwaysAuthorization()
        locationManager.startMonitoringSignificantLocationChanges()
    }

//MARK: LOCATION MANAGER:
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let long :CLLocationDegrees = manager.location?.coordinate.longitude ?? 00.00000
        let lat :CLLocationDegrees = manager.location?.coordinate.latitude ?? 00.00000
        print(lat)
        print(long)
        let location = LocationTracking()
        location.latitude = lat
        location.longitude = long

        try! realm.write {
            realm.add(location, update: false)
        }
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("Error",error.localizedDescription)
    }

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        if (status == CLAuthorizationStatus.denied) {
            print("Location access denied")
        }
    }
swift core-location cllocationmanager
1个回答
0
投票

设置后台模式功能后,可以使用startMonitoringSignificantLocationChanges()而不是startUpdatingLocation()。此方法会通知您500米的变化。

你可以通过公共API阅读这句话。

只要设备从之前的通知移动500米或更长时间,应用就会收到通知。它不应该比每五分钟更频繁地预期通知。如果设备能够从网络检索数据,则位置管理器更有可能及时发送通知。

https://developer.apple.com/documentation/corelocation/cllocationmanager/1423531-startmonitoringsignificantlocati

© www.soinside.com 2019 - 2024. All rights reserved.