检查此刻是否使用了位置服务

时间:2017-05-10 14:52:06

标签: ios objective-c core-location jailbreak iphone-privateapi

我的目标是检查越狱 iPhone当前是否正在使用任何后台导航服务。
我主要通过CLLocationManager.h标头,但在所有其他CoreLocation标头中搜索了适当的方法。找不到任何用处。还搜索了私有框架GeoServices中的方法。但那个是如此广泛,我不知道在哪里搜索 但是,我现在考虑通过检查location arrow是否显示来检查手机是否在后台使用位置。

我该如何处理并检查?

1 个答案:

答案 0 :(得分:1)

这是我在iOS 9中使用的内容。如果我记得正确,appsUsingLocationWithDetails会返回为位置服务注册的所有应用的字典。 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

如果我的代码示例不适合您,请尝试使用它们。自编写该段代码以来已经很长时间了,遗憾的是我没有记录所有权利。我的守护程序已经签署了这些,上面的代码刚刚起作用,所以可能需要或可能没有。