2012-10-24 1 views
0

Я пишу виджет центра уведомлений, и ему приходилось использовать информацию о местоположении. В обычных приложениях я использую CoreLocation, и он отлично работает. Но в моем виджете я попытался установить locationServicesEnabled, но он не пошел на функции обратного вызова, а authorizationStatus всегда kCLAuthorizationStatusNotDetermined, а параметр авторизации не отображался в Настройка -> служба определения местоположения. Я уже назначил делегат классу.NotificationCenter Widget не удалось использовать CoreLocation

Виджет погоды Yahoo Yahoo может автоматически размещаться, и он также использует CoreLocation, поэтому у виджета есть возможность использовать службу определения местоположения.

Почему CoreLocation не работает на моем виджете?


Обновление: 2012.10.24 15:52

Я использую частный API

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

Теперь, установив шоу в Setting- авторизированным> место службы. И каждый раз, когда я вытаскиваю центр уведомлений, он включается. Но authorizationStatus по-прежнему kCLAuthorizationStatusNotDetermined и не переходит к функциям обратного вызова.


Обновление: 2012.10.25 10:38

я изменить свой размещая код:

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

Если отключить услугу определения местоположения, он будет прыгать в

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

Если я включаю услугу, независимо от того, разрешаю я это или нет, лин назад (оба

- (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 не является эффективным пакетом, который приводит к использованию службы определения местоположения виджета. После того как я пользователь [[CLLocationManager alloc] initWithEffectiveBundle:[NSBundle bundleForClass:self.class]] в приватном API CoreLocation, виджет может получить информацию о местоположении в обычном режиме.

Смежные вопросы