1

ここで認証状態に問題があります。何が起こっているのかわかりません。

 if(sender.on == TRUE)
{
    [self.locationManager startUpdatingLocation];
    [self.locationManager startUpdatingHeading];

    CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
    bool headingStatus = [CLLocationManager headingAvailable];

    if( !(authStatus == kCLAuthorizationStatusAuthorized))
    {
        [self processFailedAuthorization:authStatus];
        [locationManager stopUpdatingHeading];
        [locationManager stopUpdatingLocation];
        sender.on = FALSE;

    }

kCLAuthorizationStatusNotDeterminedユーザーに承認を求めたばかりであるにもかかわらず、authStatus が時々表示されるようです。

デバッガーでコードをステップ実行しましたが、チェックする前に少し待つとCLAuthorizationStatus承認されたように返されますが、すぐにチェックすると返されないようです。

1 秒ほど待ってから続行できることはわかっていますが、必要な遅延についてのドキュメントには何もありません。

どうしたの?

4

1 に答える 1

2

CLLocationManagerDelegateには、認可ステータスがいつ変更されたかを知らせるコールバックlocationManager:didChangeAuthorizationStatus:があります。新しいステータスがデリゲートに渡されます。見るべきステータスです。場所と同様に、CLLocationManager オブジェクトのステータスも変更できます。

于 2012-10-06T21:29:46.233 に答える