0

通知センターウィジェットを作成していますが、位置情報を使用する必要がありました。通常のアプリでは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を変更したときは呼び出されません。

4

1 に答える 1

0

おそらく、WeeAppPluginバンドルは、ウィジェットが位置情報サービスを使用できない原因となる効果的なバンドルではないためです。CoreLocationのプライベートAPIを使用[[CLLocationManager alloc] initWithEffectiveBundle:[NSBundle bundleForClass:self.class]]すると、ウィジェットは通常どおり位置情報を取得できます。

于 2012-10-26T02:58:55.350 に答える