【问题标题】:How to track user location across all view controllers in an ios app?如何在 ios 应用程序中跨所有视图控制器跟踪用户位置?
【发布时间】:2019-06-07 03:40:05
【问题描述】:

我正在构建一个应用程序,该应用程序在应用程序打开时跟踪用户位置并使用 geofire 进行查询。我想从用户可能打开的任何视图控制器保持位置更新。我想知道如何做到这一点。

目前,我在主视图控制器中设置了 geofire 和位置跟踪。为了让位置跟踪在所有视图控制器中工作,我是否必须对每个单独的视图控制器进行编码以跟踪位置,或者我可以将代码放入例如应用程序委托文件中吗?

【问题讨论】:

    标签: ios swift firebase geofire


    【解决方案1】:

    把它放在appdelegate.swift中

    let locationManager = CLLocationManager()
    
    
    self.locationManager.requestAlwaysAuthorization() 
    
    // For use in foreground
    self.locationManager.requestWhenInUseAuthorization()
    
    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
        locationManager.startUpdatingLocation()
    }
    
    //Here Get Late long.
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
        print("locations = \(locValue.latitude) \(locValue.longitude)")
    }
    

    【讨论】:

      【解决方案2】:

      您可以将代码放在 AppDelegate 中。也许在访问服务器时使用计时器以优化性能

      参考这个答案: Location Manager update frequency, iphone

      【讨论】:

        【解决方案3】:

        也许这段代码会起作用,但你必须在你的所有视图控制器中使用它

        var LocationManager = CLLocationManager()
        LocationManager.requestWhenInUseAuthorization()
        
        if( CLLocationManager.authorizationStatus() == .authorizedWhenInUse ||
            CLLocationManager.authorizationStatus() ==  .authorizedAlways){
        
          print("currentLocation = \(LocationManager.location)")
        
         }
        

        【讨论】:

          【解决方案4】:

          在活动和非活动状态下使用HSLocationManager 进行无限位置跟踪。

          位置管理器,允许每次获取后台位置更新 n 秒,具有所需的位置精度。

          优势:

          • 如果位置管理器当前处于 正在运行。

          • 在需要时定期更新位置(范围在 2 - 170 秒(受允许的最大后台任务时间限制))

          • 可自定义定位精度和时间段。

          • 低内存消耗(单例类)

          • 电池消耗更少。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多