Я пишу виджет центра уведомлений, и ему приходилось использовать информацию о местоположении. В обычных приложениях я использую 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.