2015-02-10 35 views
2

我正在使用Core Location來跟蹤區域,以檢測用戶是否輸入o退出此區域。didEnterRegion和didExitRegion在iOS8中不起作用

不幸的是,我的代碼適用於iOS7,但不適用於iOS8。

這是我使用的代碼:

func setMonitoredRegion() { 
var startLocation: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: +52.53753000, longitude: +13.35971000)   
    var monitoredRegion = CLCircularRegion(center: startLocation, radius: 100, identifier: "Region Test") 
    locationManager.startMonitoringForRegion(monitoredRegion) 
} 

該地區開始在委託方法didStartMonitoringForRegion被跟蹤:

func locationManager(manager: CLLocationManager!, didStartMonitoringForRegion region: CLRegion!) { 
    println("Starting monitoring \(region.identifier)") 
} 

但在iOS8上的方法didEnterRegion和didExitRegion不所謂:

func locationManager(manager: CLLocationManager!, didEnterRegion region: CLRegion!) { 
    println("Entered Region \(region.identifier)") 
    self.showAlertViewWithTitle("Enter Region", message: "The user has entered in monitored region").show() 
} 

func locationManager(manager: CLLocationManager!, didExitRegion region: CLRegion!) { 
    println("Exited Region \(region.identifier)") 
    self.showAlertViewWithTitle("Exit Region", message: "The user has left monitored region").show() 
} 

此外,我沒有收到任何錯誤:

func locationManager(manager: CLLocationManager!, monitoringDidFailForRegion region: CLRegion!, withError error: NSError!) { 
    println("Error:" + error.localizedDescription) 
} 

或者:

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { 
    println("Error:" + error.localizedDescription) 
} 

在iOS8上我已經包括以下鑰匙插入Info.plist文件:

NSLocationWhenInUseUsageDescription 

並在代碼中,我獲得用戶授權:

locationManager.requestWhenInUseAuthorization() 

有什麼想法?謝謝。

回答

4

我已經能夠在我的.plist文件中設置「NSLocationAlwaysUsageDescription」得到這個工作。

我真的不知道是否會提高時,應用程序並不運行在電池使用,但是,讓我可以在進入和退出時通知...

+0

那些入口和出口方法將觸發與NSLocationWhenInUseUsageDescription或不? – Ramakrishna 2017-02-07 09:54:27

1

不要忘了激活通知屬性:

self.beaconRegion.notifyOnEntry=YES; 
self.beaconRegion.notifyOnExit=YES; 
self.beaconRegion.notifyEntryStateOnDisplay=YES; 
+0

我以前跟我CLCircularRegion區域用它locationManager.startMonitoringForRegion(monitoredRegion)不起作用。 :( – RebecaMartin 2015-02-10 12:36:03

相關問題