2014-12-31 1 views
0

SpringBoard 또는 imagent에서 CLLocationManager를 사용하지만 CLLocationManager를 할당 할 때 오류가 발생했습니다. with:depending on legacy on-demand authorization, which is not supported for new apps. 도 locationd 과정에서, 나는 같은 상황을 가지고 ...SpringBoard에서 CLLocationManager를 사용했지만 오류가 발생했습니다. 새로운 응용 프로그램에서는 지원되지 않는 기존 주문형 인증에 따라 다릅니다.

%hook SpringBoard 
-(void)applicationDidFinishLaunching: (id)application { 
    CLLocationManager *locationMgr = [[CLLocationManager alloc] init]; 
    %orig; 
} 
%end 

어떻게 그런 과정에서 위치 정보를 얻을 수있다 질문? 아니면 앱의 권한을 변경할 수 있습니까?

+0

이 봐 제발 내 대답 읽을 http://girijeshkumar2007.blogspot.in/2014/10/ios-8-location-services-update.html –

+0

그러나 문제는 그 시스템 애플 리케이션, 나는 그들의 Info.plist를 바꿀 수 없다는 것입니다 .. –

답변

1

iOS 8의 변경 사항 때문입니다. 이전 iOS 버전에서는 locationdcom.apple.locationd.preauthorized 자격이 부여되어 사용자 권한없이 위치 정보에 액세스 할 수 있습니다. 심지어 locationd도 포함되어 있지 않습니다. SpringBoardimagent과 동일합니다. 물론 locationd 인 것은 자체 API를 통해 위치에 액세스 할 수 있습니다. locationd은 권한 부여에서 필터링 및 다양한 소스의 원시 위치 데이터 처리까지 모든 것을 처리하는 위치 데몬입니다.

Info.plist은 변경할 수 있지만 그다지 효과는 없습니다. 해당 앱은 여전히 ​​승인되지 않습니다. SpringBoard을 사용하면 위치에 액세스 할 수 있도록 기본 경고를 표시해야합니다. locationdimagent을 사용하면 아무 것도 할 수 없습니다. 데몬입니다. 데몬에는 UI가 없으므로 권한을 요청하는 경고를 표시 할 수 없습니다. 이 시스템을 해결하기 위해 데몬은 개인 정보와 같은 사용자 권한없이 무언가에 액세스하기 위해 권한을 사용합니다. 이제

, 당신이 떨어져 SpringBoard에 대한 사용자의 권한을 요청에서 그것을 해결하는 방법 :

  • 자신의 데몬이 com.apple.locationd.preauthorized 자격으로 서명 작성합니다. 그러면 권한없이 위치에 액세스 할 수 있습니다. 데몬은 기본적으로 권한을 항상 부여받습니다.
  • com.apple.locationd.preauthorized으로 시스템 앱을 종료하십시오. 그것은 일종의 해킹입니다. 저는이 경우 데몬을 작성하는 것이 모든 문제를 해결할 때 개인적으로 반대합니다. 당신은 아직도 그런 식으로하고 싶은 경우 here
+0

고마워, 문제는 com.apple.locationd.preauthorized와 함께 서명 애플 리케이션으로 해결. 이제, 나 자신의 데몬을 만들려고하고있다. –

관련 문제