我的目标是检查越狱 iPhone当前是否正在使用任何后台导航服务。
我主要通过CLLocationManager.h
标头,但在所有其他CoreLocation
标头中搜索了适当的方法。找不到任何用处。还搜索了私有框架GeoServices
中的方法。但那个是如此广泛,我不知道在哪里搜索
但是,我现在考虑通过检查location arrow是否显示来检查手机是否在后台使用位置。
我该如何处理并检查?
答案 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
如果我的代码示例不适合您,请尝试使用它们。自编写该段代码以来已经很长时间了,遗憾的是我没有记录所有权利。我的守护程序已经签署了这些,上面的代码刚刚起作用,所以可能需要或可能没有。