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() } 

如果我使用startUpdatingLocationdidUpdateLocations调用didUpdateLocations方法,但不会调用startMonitoringSignificantLocationChanges

为什么没有调用startMonitoringSignificantLocationChanges 。 我在ios模拟器中测试这个。 我不知道如何检查设备。

它正在工作,但是很难触发显着的位置变化 – 通常在设备更换单元塔时发生 – 我认为不可能使用模拟器。

你可能不得不乘坐自行车/汽车,并且行驶至少几公里。

你可以使用一个技巧,这将触发重大的位置变化:

在iPhone上以几秒的间隔开启和关闭Airplaine模式,它应该诱使设备认为它改变了单元塔并触发了重要的位置变化。

在此处输入图像描述

在您的模拟器中,转到Debug-> Location-> Custom并更改位置,然后测试它。