0

내 목표는 의 jailbroken 아이폰이 현재 배경 네비게이션 서비스를 사용하고 있는지 확인하는 것입니다.
주로 CLLocationManager.h 헤더를 통과했지만 다른 모든 CoreLocation 헤더에서 적절한 방법을 검색했습니다. 사용에 아무 것도 발견하지 못했습니다. 개인 프레임 워크 GeoServices에서 메소드를 검색했습니다. 하지만 그 중 하나가 너무 광범위하기 때문에 어디에서 검색해야할지 모르겠습니다.
그러나 이제 휴대 전화가 location arrow이 표시되는지 확인하여 백그라운드에서 위치를 사용하는지 확인하는 방법을 생각합니다.현재 위치 서비스가 사용되고 있는지 확인하십시오.

어떻게 진행하고 확인할 수 있습니까?

+1

'CLLocationManager'에서'appsUsingLocation' 및'appsUsingLocationWithDetails' 메소드를 확인하십시오 – creker

+0

시도했습니다. 그러나, 나는 그들의 반환 값이 뭔지 모르겠다. 나는'idappUsingLocation = [[objc_getClass ("CLLocationManager") sharedManager] appsUsingLocation];'및'[appsUsingLocation count]'를 사용하여 어떤 앱이 그것을 사용하는지 알아 보았지만 그 값은 항상 0입니다. 어떻게 할 것인지에 대한 코드 예제를 제공해 주시겠습니까? – Clawish

답변

1

다음은 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 

내 코드 예제가 효과가 없을 경우 사용해보십시오. 코드 조각을 작성하고 불행히도 모든 권한을 문서화하지 않았으므로 오랜 시간이 걸렸습니다. 내 데몬은 이미 이것들과 함께 서명되었고, 위의 코드가 작동했기 때문에, 아마도 뭔가가 필요하거나 그렇지 않을 수도 있습니다.

+0

거룩한 !!!!! 이 작품; 정말 고맙습니다! 'for ([[% c (CLLocationManager) sharedManager] 앱에서 NSDictionary * 앱 사용 위치 별 세부 정보] allValues])'만 변경되었습니다. 그리고 네, 최소한 그 자격 중 하나가 필요합니다! 없으면 작동하지 않습니다. 모두 추가했습니다. 미친 소품 – Clawish

관련 문제