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

时间:2013-12-18 04:40:13

标签: ios gps wifi core-location cllocationmanager

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

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

我知道我可以使用desiredAccuracy参数更改位置数据的准确性。但实际核心位置如何运作?它是使用GPS天线或WiFi还是手机信号塔获取的?我可以要求位置管理员仅使用GPS或仅使用WiFi或仅使用Cell塔进行提取吗?

2 个答案:

答案 0 :(得分:3)

正如rmaddy所说,你无法控制如何确定位置。换句话说,您无法要求应用/设备使用GPS / CellTower / Wifi。

但是,您可以通过位置更新类型告诉应用程序是否“支持”GPS或Cell Tower。

如果你这样做:

[locationManager startUpdatingLocation];

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

如果你这样做:

[locationManager startMonitoringSignificantLocationChanges];

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

希望这会有所启发。

<强>更新

请参阅Apple的链接: CLLocationManager Class Reference

但总的来说,您总是可以获得一次更新(将通过委托方法到达),然后使用:

[locationManager stopMonitoringSignificantLocationChanges];

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

答案 1 :(得分:1)

您无法强制CL使用GPS或Wifi或单元格,但您可以设置所需的准确度,以便它可能会执行您想要的操作。

如果您将desiredAccuracy设置为500或更高,它将使用Wifi或Cellular(如果可用),并关闭GPS。如果将desiredAccuracy设置为300或更低,则必须使用GPS。