Ich habe mit der Regionsüberwachung experimentiert, um eine Warnung oder eine lokale Benachrichtigung anzuzeigen, wenn sich der Benutzer innerhalb der festgelegten Region befindet. Als ersten Schritt habe ich eine Druckzeile hinzugefügt, um zu sehen, ob sie im Debug-Bereich funktioniert. Während die anderen Zeilen gedruckt werden, bekomme ich nichts für didEnterRegion und didExitRegion.didEnterRegion, didExitRegion wird nicht aufgerufen
Ich simuliere den Standort innerhalb/außerhalb der gegebenen Region, aber ich habe kein Glück. Es wäre großartig, wenn jemand den Code unten sehen und sehen könnte, was ich verpasst habe. Vielen Dank.
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var manager = CLLocationManager?()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
manager = CLLocationManager()
let latitude: CLLocationDegrees = 48.858400
let longitude: CLLocationDegrees = 2.294500
let center: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
let radius: CLLocationDistance = CLLocationDistance(100.0)
let identifier: String = "Notre Dame"
let currRegion = CLCircularRegion(center: center, radius: radius, identifier: identifier)
manager?.distanceFilter = 10
manager?.desiredAccuracy = kCLLocationAccuracyBest
currRegion.notifyOnEntry = true
currRegion.notifyOnExit = true
manager?.requestWhenInUseAuthorization()
manager?.delegate = self
manager?.pausesLocationUpdatesAutomatically = true
manager?.startMonitoringForRegion(currRegion)
manager?.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) {
print("The monitored regions are: \(manager.monitoredRegions)")
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) {
NSLog("Entered")
}
func locationManager(manager: CLLocationManager, didExitRegion region: CLRegion) {
NSLog("Exited")
}
}
Awesome -, die wie ein gearbeitet Charme. Danke für Ihre Hilfe! Wenn ich fragen darf, warum funktioniert RequestWhenInUseAuthorization nicht? Auch wenn die App beim Testen des Codes aktiv war? – user6394273
Ich denke, dass Sie RequestAlwaysAuthorization() anfordern müssen, um Regionen Überwachung zu verwenden. Dieses Lernprogramm enthält weitere Informationen http://shrikar.com/swift-tutorial-corelocation-and-region-monitoring-in-ios-8/ –