当应用程序在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 运行?

当应用程序处于后台模式时,是不是可以在 iPhone 中闪烁手电筒?

当应用程序处于终止状态时,iOS 静默推送通知不会收到