2012-10-24 5 views
0

알림 센터 위젯을 쓰고 있는데 위치 정보를 사용해야했습니다. 일반 응용 프로그램에서는 CoreLocation을 사용하며 정상적으로 작동합니다. 그러나 위젯에서 나는 locationServicesEnabled을 시도했지만 콜백 함수에 가지 않았고 authorizationStatus은 항상 kCLAuthorizationStatusNotDetermined이고 승인 설정은 설정 -> 위치 서비스에 표시되지 않았습니다. 이미 클래스에 위임자를 설정했습니다.알림 센터 위젯이 CoreLocation을 사용하지 못했습니다.

시스템의 Yahoo Weather 위젯은 자동으로 위치를 지정할 수 있으며 CoreLocation도 사용하므로 위젯은 위치 서비스를 사용할 수 있습니다.

내 위젯에서 CoreLocation이 작동하지 않는 이유는 무엇입니까?


업데이트 : 2012년 10월 24일 15시 52분

내가 사용하는 개인 API

[CLLocationManager setAuthorizationStatus:YES 
           forBundle:[NSBundle bundleForClass:self.class]] 

이제 설정 -에서 쇼를 설정 권한 부여> 위치 서비스. 알림 센터를 당길 때마다 켜집니다. 그러나 authorizationStatus은 여전히 ​​kCLAuthorizationStatusNotDetermined이며 콜백 함수로 이동하지 않습니다.


업데이트 : 위치 서비스를 끄면

[CLLocationManager setDefaultEffectiveBundle:[NSBundle bundleForClass:self.class]]; 
[_locationManager startUpdatingLocation]; 

, 그것은

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
으로 이동합니다 : 2012년 10월 25일 10시 38분

나는 내 위치 결정 코드를 변경

서비스를 사용하도록 설정 한 경우 내가 권한을 부여했는지 여부에 관계없이 cal이 없습니다. 링 다시 (모두

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

가 호출되지 않습니다). 그런데

, 나는/서비스 해제를 설정,

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

이 호출,하지만 난 authorizationStatus을 변경하지 않을 때는됩니다.

답변

0

아마도 WeeAppPlugin 번들은 위젯 캔트의 사용 위치 서비스를 유발하는 유효한 번들이 아니기 때문입니다. CoreLocation의 비공개 API에 [[CLLocationManager alloc] initWithEffectiveBundle:[NSBundle bundleForClass:self.class]] 사용자를 입력하면 위젯이 위치 정보를 정상적으로 가져올 수 있습니다.

관련 문제