swift - 在后台模式下使用locationManager代理("欺骗方式"),位置 NSTimer

  显示原文与译文双语对照的内容
81 4

我希望在应用程序中运行后台模式,至少每分钟执行一次检查wifi连接并做出决定。我使用英镑的locationManager委托,这样我可以在后台运行我的收费 然而,位置管理器消耗了大量的电池电量。这里应用不是苹果发布的。然而,我正在寻找更高效的位置管理器的设置,这样它不会是那么大的功耗或者它的他好的。当前设置是好的,但是自我启用了位置管理器后,函数更新会延迟太多。在我使用两种委托方法之前,( didEnterRegion和 didExitRegion )的功耗更高,不准确。我阅读了大量可以用的教程,并检查了堆栈溢出中的它的他相关文章,但是我在委托函数中

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
 self.timer = NSTimer.scheduledTimerWithTimeInterval(45, target: self, selector: #selector(self.checkNetworkSSID), userInfo: nil, repeats: true)
 manager.stopMonitoringSignificantLocationChanges()
 manager.stopUpdatingLocation()
 }

以下是我在 viewDidLoad 和英镑AppDelegate中的内容

manager = CLLocationManager()
 manager?.delegate = self
 manager?.requestWhenInUseAuthorization()
 manager?.startUpdatingLocation()
 manager?.desiredAccuracy = kCLLocationAccuracyThreeKilometers
 manager?.pausesLocationUpdatesAutomatically = true
 manager?.activityType = CLActivityType.Fitness
时间:原作者:0个回答

138 3

为了获取背景位置,你需要在代码中调用这里代码,并确保在 info.plist 中添加 NSLocationAlwaysUsageDescription

 locationManager = CLLocationManager()
 locationManager.delegate = self
 locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
 locationManager.pausesLocationUpdatesAutomatically = false
 locationManager.startMonitoringSignificantLocationChanges()
 if #available(iOS 9.0, *) {
 locationManager.allowsBackgroundLocationUpdates = true
 }
 locationManager.requestAlwaysAuthorization()
 locationManager.startUpdatingLocation()
原作者:
...