如何在IOS11中使用swift 4连续在后台运行位置更新

时间:2018-01-16 12:42:34

标签: ios swift

我正在做一个关于连续背景位置更新的项目,我的最终目标是让应用程序永久保留(除非用户杀死它)。但我只能运行30个小时而且我不知道为什么。最初,我没有修改distanceFilter,它只能停留26个小时。我检查了有关应用程序的五个州的文档,我不确定应用程序将在何种情况下从后台迁移到暂停状态。

locationManager = CLLocationManager()
    locationManager!.requestAlwaysAuthorization()
    locationManager!.delegate = self
    if #available(iOS 9.0, *) {
        locationManager!.allowsBackgroundLocationUpdates = true
    }
    locationManager!.pausesLocationUpdatesAutomatically = false
    locationManager!.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    locationManager!.distanceFilter = 100

我使用的是标准位置更新(startUpdatingLocation()),而不是重要的位置更改。另外,我使用firebase作为我的后端,所有位置数据都将更新到那里。

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let userID = Auth.auth().currentUser?.uid

    let now = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm:ss"
    let currentTime = dateFormatter.string(from: now)

    if locations.count == 0 {
        return
    }

    let lastloc = locations.last
    if lastloc == nil {
        return
    }

    let lat = String(lastloc!.coordinate.latitude)
    let lng = String(lastloc!.coordinate.longitude)

    let data = ["Lat": lat, "Lng": lng]

    ref.child("GPS").child(userID!).child(String(testCount)+"-"+currentTime).setValue(data)

    testCount = testCount + 1
}

我认为firebase没有自动注销功能。 任何建议都会很明显,谢谢。

0 个答案:

没有答案