Как отслеживать местоположение пользователя на всех контроллерах представления в приложении ios? - PullRequest
0 голосов
/ 07 июня 2019

Я создаю приложение, которое отслеживает местоположение пользователей, пока приложение открыто, и запрашиваю его с помощью geofire. Я хотел бы сохранить обновление местоположения с любого контроллера представления, который пользователь может открыть. Мне интересно, как это сделать.

В настоящее время у меня настроено отслеживание географического огня и местоположения в контроллере основного вида. Чтобы система отслеживания местоположения работала на всех контроллерах представления, нужно ли кодировать каждый отдельный контроллер представления для отслеживания местоположения или я могу поместить код, например, в файл делегата приложения?

Ответы [ 4 ]

1 голос
/ 07 июня 2019

Поместите это в приложение Delegate.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)")
}
0 голосов
/ 07 июня 2019

может быть, этот код будет полезен, но вы должны использовать это во всех ваших контроллерах представления

var LocationManager = CLLocationManager()
LocationManager.requestWhenInUseAuthorization()

if( CLLocationManager.authorizationStatus() == .authorizedWhenInUse ||
    CLLocationManager.authorizationStatus() ==  .authorizedAlways){

  print("currentLocation = \(LocationManager.location)")

 }
0 голосов
/ 07 июня 2019

Используйте HSLocationManager для бесконечного отслеживания местоположения в активном и неактивном состоянии.

Менеджер местоположений, который позволяет получать фоновые обновления местоположения каждые n секунд с желаемой точностью определения местоположения.

Преимущество:

  • ОС никогда не убьет наше приложение, если в данный момент работает менеджер местоположений.

  • Периодически обновлять местоположение, когда это необходимо (диапазон составляет от 2 до 170 секунд (ограничено максимально допустимым временем фоновой задачи)))

  • Настраиваемая точность определения местоположения и период времени.

  • Низкое потребление памяти (класс Singleton)

  • Меньшеразряд батареи.
0 голосов
/ 07 июня 2019

Вы можете разместить код в AppDelegate.Возможно, используйте таймер при обращении к серверу, чтобы оптимизировать производительность

См. Этот ответ: Частота обновления Location Manager, iphone

...