startMonitoringSignificantLocationChanges在swift中不起作用
我在AppDelegate文件中使用Swift在我的应用程序中添加了CLLocationManager。
在Appdelegate.swift文件中,
import CoreLocation @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate { var locationManager: CLLocationManager!
在didbecomeActive方法中:
func applicationDidBecomeActive(application: UIApplication) { if((locationManager) != nil) { locationManager.stopMonitoringSignificantLocationChanges() locationManager.delegate = nil locationManager = nil } locationManager = CLLocationManager() locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.activityType = CLActivityType.OtherNavigation locationManager.requestAlwaysAuthorization() locationManager.startMonitoringSignificantLocationChanges() }
如果我使用startUpdatingLocation
, didUpdateLocations
调用didUpdateLocations
方法,但不会调用startMonitoringSignificantLocationChanges
。
为什么没有调用startMonitoringSignificantLocationChanges
。 我在ios模拟器中测试这个。 我不知道如何检查设备。
它正在工作,但是很难触发显着的位置变化 – 通常在设备更换单元塔时发生 – 我认为不可能使用模拟器。
你可能不得不乘坐自行车/汽车,并且行驶至少几公里。
你可以使用一个技巧,这将触发重大的位置变化:
在iPhone上以几秒的间隔开启和关闭Airplaine模式,它应该诱使设备认为它改变了单元塔并触发了重要的位置变化。
在您的模拟器中,转到Debug-> Location-> Custom并更改位置,然后测试它。