다음은 iOS 9에서 사용 된 기능입니다. 올바르게 기억하면 appsUsingLocationWithDetails
은 위치 서비스에 등록 된 모든 앱 사전을 반환합니다. LocationTechnologiesInUse
에는 위치 데이터를 업데이트하기 위해 앱에서 사용하는 기술 배열이 포함되어 있지만 그 값은 알 수 없습니다. 아마도 GPS, WiFi 핫스팟, 셀 타워 또는 다른 것을 사용하는 값을 가진 enum 일 것입니다. 앱이 현재 위치 서비스를 사용하는 경우에만 배열에 무언가가 포함되므로 중요하지 않습니다. 다음은 예입니다.
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
내 코드 예제가 효과가 없을 경우 사용해보십시오. 코드 조각을 작성하고 불행히도 모든 권한을 문서화하지 않았으므로 오랜 시간이 걸렸습니다. 내 데몬은 이미 이것들과 함께 서명되었고, 위의 코드가 작동했기 때문에, 아마도 뭔가가 필요하거나 그렇지 않을 수도 있습니다.
'CLLocationManager'에서'appsUsingLocation' 및'appsUsingLocationWithDetails' 메소드를 확인하십시오 – creker
시도했습니다. 그러나, 나는 그들의 반환 값이 뭔지 모르겠다. 나는'idappUsingLocation = [[objc_getClass ("CLLocationManager") sharedManager] appsUsingLocation];'및'[appsUsingLocation count]'를 사용하여 어떤 앱이 그것을 사용하는지 알아 보았지만 그 값은 항상 0입니다. 어떻게 할 것인지에 대한 코드 예제를 제공해 주시겠습니까? – Clawish