2017-05-30 2 views
1

Ich versuche, this tutorial bei der Einrichtung von Geofences für Standorte zu folgen, aber ich möchte Geofences mit einem Array von Informationen, die ich aus meiner Firebase-Datenbank geschnappt habe, erstellen. Weiß jemand, wie ich das machen würde oder irgendwelche Tutorials, die sie für mich verknüpfen könnten? Ich kämpfe darum, wie ich das machen würde, da ich Swift noch nicht kenne. Könnte mir jemand erklären, was ich tun würde, oder mir jemanden zeigen, der das erklären könnte?Wie würde ich Geofences mit einem Array von Informationen erstellen?

+0

Was ist in der Datenbank? Ist es Breiten-/Längengrad? Im Allgemeinen benötigen Sie einen Punkt und einen Radius, um einen Geofence zu erstellen. –

+0

Die Datenbank hat den Breiten- und Längengrad sowie den Radius und eine Kennung für die Region. Danke für das Beispiel unten, ich werde es versuchen. –

Antwort

0

Etwas wie folgt aus:

func startMonitoring(_ manager:CLLocationManager, region:CLCircularRegion) { 
    if !CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) { 
     print("Cannot monitor location") 
     return 
    } 
    if CLLocationManager.authorizationStatus() != .authorizedAlways { 
     print("Please grant access") 
    } else { 
     let locationManager = CLLocationManager() 
     locationManager.startMonitoring(for: region) 
    } 
} 

func getRegionForLocation(_ location:CLLocation) -> CLCircularRegion { 
    let radiusMeters:Double = 1000 
    let identifier = "MyGeofence \(location)" 

    let region = CLCircularRegion(center: location.coordinate, radius: radiusMeters, identifier: identifier) 

    region.notifyOnEntry = true 
    region.notifyOnExit = !region.notifyOnEntry 

    return region 
} 

func getLocationsFromFireBase() -> [CLLocation] { 
    var locations:[CLLocation] = [] 

    // .. populate with locations from DB 

    return locations 
} 


//where you want to enable 
let locationManager = CLLocationManager() 
locationManager.requestAlwaysAuthorization() 

let locations = getLocationsFromFireBase() 

for location in locations { 
    let region = getRegionForLocation(location) 
    startMonitoring(locationManager, region: region) 
} 

Ich Beschönigung wie Lage den Zugang zu ermöglichen (Sie haben NSLocationAlwaysUsageDescription in Ihrem info.plist zum Beispiel hinzufügen), aber die allgemeinen Grundsätze der mehrere geofences Zugabe gezeigt. Sie müssen außerdem einen Delegaten zum CLLocationManager hinzufügen, damit Sie benachrichtigt werden, wenn das Gerät in einen Geofence ein- oder aussteigt.

Verwandte Themen