检查当前是否使用定位服务

Check if location services are used at the moment

我的目标是检查越狱iPhone当前是否正在使用任何后台导航服务。
我主要浏览了 CLLocationManager.hheader,但在所有其他 CoreLocation header 中搜索了合适的方法。发现没什么用。还在私有框架GeoServices中搜索了方法。但是那个太广泛了,我不知道去哪里搜索。
但是,我现在想通过检查 location arrow 是否显示来检查 phone 是否在后台使用位置。

我该如何进行检查?

这是我在 iOS 9 中使用的内容。如果我没记错的话,appsUsingLocationWithDetails returns 一个包含所有注册位置服务的应用程序的字典。 LocationTechnologiesInUse 包含应用程序用来更新位置数据的一系列技术,但我不知道其值。可能是一些枚举,其值表明使用了 GPS、WiFi 热点、手机信号塔或其他东西。这并不重要,因为只有当应用程序此时使用位置服务时,数组才会包含某些内容。这是一个例子:

for (NSDictionary* app in [[CLLocationManager sharedManager] appsUsingLocationWithDetails].allValues)
{
    if ([app[@"LocationTechnologiesInUse"] count] > 0)
    {
        //the app uses location services
    }
}

您可能需要一些权利才能访问该信息。我的守护程序使用这些授权进行了签名,布尔值设置为 true。

com.apple.locationd.authorizeapplications
com.apple.locationd.preauthorized
com.apple.locationd.effective_bundle
com.apple.locationd.status
com.apple.CoreLocation.PrivateMode

如果我的代码示例不适合您,请尝试使用它们。很久没有写过那段代码了,不幸的是我没有记录所有的权利。我的守护进程已经用这些签名,上面的代码刚刚工作,所以可能需要或不需要。