通知センターウィジェットを作成していますが、位置情報を使用する必要がありました。通常のアプリではCoreLocationを使用していますが、正常に動作します。しかし、私のウィジェットでは、しようとしましlocationServicesEnabled
たが、コールバック関数に移動しませんでした。これauthorizationStatus
は常にkCLAuthorizationStatusNotDetermined
であり、承認設定は[設定]->[位置情報サービス]に表示されませんでした。私はすでにデリゲートをクラスに設定しました。
システムのYahoo天気ウィジェットは自動検索が可能で、CoreLocationも使用するため、ウィジェットには位置情報サービスを使用する機能があります。
CoreLocationがウィジェットで機能しないのはなぜですか?
更新:2012.10.24 15:52
プライベートAPIを使用しています
[CLLocationManager setAuthorizationStatus:YES
forBundle:[NSBundle bundleForClass:self.class]]
これで、認証設定が[設定]->[位置情報サービス]に表示されます。そして、通知センターをプルダウンするたびに、それがオンになります。しかし、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を変更したときは呼び出されません。