Location tracking
Enable location updates, more about starting and stopping location updates see HERE.
On any location change you will inform Ocamba about users location.
If user is in location of interest device will receive push notification.
Don’t forget to enable Location updates in Signing & Capability for main target in Background modes.
In method for catching location update OcambaHoood.updateLocation method should be called.
func locationManager(_ manager:CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
if let location: CLLocation = locations.last {
OcambaHoood.updateLocation(location: location)
}
An example for setting location updates:
import CoreLocation
import UIKit
import OcambaHoood
class SomeClass: UIViewController,CLLocationManagerDelegate {...
// Create an instance of CLLocationManager*
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Assign self as location manager delegate to receive callback from core location*
locationManager.delegate = self
// Request for authorization when app in use or always*
locationManager.requestWhenInUseAuthorization()
// If you wish to enable tracking in background set this value to true*
locationManager.allowsBackgroundLocationUpdates = true
// Pausing location updates you save power cosumption*
locationManager.pausesLocationUpdatesAutomatically = true
// Accuracy of location, default is kCLLocationAccuracyBest (type: Double)
locationManager.desiredAccuracy = kCLLocationAccuracyBest
/** Distance filter is used for determing on which distance location sholud be updated*
default is kCLDistanceFilterNone and it will update any movement*/
locationManager.distanceFilter = kCLDistanceFilterNone
// Starting location update*
locationManager.startUpdatingLocation()
}
// MARK: - CoreLocation protocol delegate methods
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location: CLLocation = locations.last {
// Passing captured location to Ocamba
OcambaHoood.updateLocation(location: location)
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
// Do some code here*
}
func locationManagerDidPauseLocationUpdates(_ manager: CLLocationManager) {
// Do some code here*
}