当应用程序在iOS swift 3中处于后台模式时如何每10秒获取一次纬度和经度
Posted
技术标签:
【中文标题】当应用程序在iOS swift 3中处于后台模式时如何每10秒获取一次纬度和经度【英文标题】:How to get latitude and longitude in every 10 seconds when app in background mode in iOS swift 3 【发布时间】:2017-11-07 11:57:46 【问题描述】:我开发了一个用于公共汽车跟踪的应用程序,我想将司机的纬度和经度发送到后端服务器以更新我当前的位置。 但是当应用程序处于后台模式时,如何获得纬度和经度????
【问题讨论】:
【参考方案1】:您需要将CoreLocation
框架与NSTimer
一起使用。
1:在您的项目中添加CoreLocation
框架。
2:允许"Location Update"
在"BackgroundModes"
2:在 YOURViewController 或 AppDelegate 中您要访问的位置添加:
import CoreLocation
class YourViewController: UIViewController, CLLocationManagerDelegate
// Location Manager
let locManager = CLLocationManager()
override func viewDidLoad()
locManager.delegate = self
// 300 = 300 seconds. Change time according to you. This is repeating funciton.
let _ = Timer.scheduledTimer(timeInterval: TimeInterval(300), target: self, selector: #selector(self.getLocation), userInfo: nil, repeats: true)
func startUpdatingBugs()
locManager.delegate = self
locManager.desiredAccuracy = kCLLocationAccuracyBest;
locManager.distanceFilter = 10; // meters
locManager.startUpdatingLocation()
现在添加代表以获取位置并上传到服务器或其他任何东西。
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
var geoLocationLongitude = location?.coordinate.longitude ?? "na",
var geoLocationLattitude = location?.coordinate.latitude ?? "na",
【讨论】:
以上是关于当应用程序在iOS swift 3中处于后台模式时如何每10秒获取一次纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章
iOS:Objective -C如何在应用程序处于后台模式时更改推送通知声音有效负载?
当我的应用程序处于后台或关闭时,当远程推送通知到达时从有效负载中获取数据
应用程序进入后台时如何保持 Swift Socket IO 运行?