iOS:是否可以要求核心位置框架仅使用手机信号塔或仅使用WiFi或使用GPS天线来获取位置



我正在尝试使用核心位置框架在iOS应用程序中获取位置数据。我正在使用下面的代码片段来启动位置管理器。

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = 5;

我知道我可以使用所需的准确性参数更改位置数据的准确性。但实际核心位置是如何工作的呢?它是否使用 GPS 天线或 WiFi 或手机信号塔获取?我可以要求位置管理员仅使用 GPS 或仅使用 WiFi 或手机信号塔取货吗?

正如 rmaddy 所提到的,您无法控制如何确定位置。换句话说,您不能要求应用程序/设备使用GPS/CellTower/Wifi之一。

但是,您可以通过位置更新的类型告诉应用程序是"偏爱"GPS还是手机信号塔。

如果您这样做:

[locationManager startUpdatingLocation];

然后该应用程序肯定会使用GPS +可能是wifi和/或手机信号塔。

如果您这样做:

[locationManager startMonitoringSignificantLocationChanges];

然后,该应用程序肯定会使用手机信号塔,并在您从一个手机信号塔移动到下一个手机信号塔时提供位置更新。这应该会减少您的 GPS 使用量和电池使用量。话虽如此,我不确定在这种情况下,GPS的使用是否完全消除。

希望这能带来一些启发。

更新

请参阅苹果的链接:CLLocationManager 类参考

但一般来说,您始终可以获取一个更新(将通过委托方法到达),然后使用:

[locationManager stopMonitoringSignificantLocationChanges];

您将不得不做更多的工作并检查该位置的时间戳,以确保更新不是旧的缓存更新之一。

您不能强制CL使用GPS或Wifi或手机,但您可以设置所需的精度,以便它可能会做您想要的。

如果您将 desiredAccuracy 设置为 500 或更高,它将使用 Wifi 或蜂窝网络(如果可用),并将 GPS 关闭。 如果将所需精度设置为 300 或更低,则必须使用 GPS。