4

重複の可能性:
ユーザーがCoreLocation権限を拒否したかどうかを判断する

ユーザーがiOSアプリで「デフォルトの場所を使用する」ことを拒否したかどうかを検出するにはどうすればよいですか?

選択に応じて、異なるビューコントローラを提示したいと思います。

ありがとう

4

4 に答える 4

4

そのためには、以下のデリゲートメソッドを実装する必要があります。

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
    if([error code]== kCLErrorDenied)
        self.locationDenied = YES;

        switch ([error code]) {
        // "Don't Allow" on two successive app launches is the same as saying "never allow". The user
        // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
        case kCLErrorDenied:
            [appDelegate showAllowGPSLocationView];
        default:
            break;
    }

    self.locationDefined = NO;
}

AppDelegateでメソッド「showAllowGPSLocationView」を作成できます。そして、ユーザーにビューを表示します。GPS位置情報にアクセスする必要があります。

それがあなたの問題を解決することを願っています。

ハッピーコーディング!

于 2013-01-29T10:18:06.560 に答える
1
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    if (status == kCLAuthorizationStatusDenied) {
        // denied
    }
    else if (status == kCLAuthorizationStatusAuthorized) {
        // allowed
    }
}

デリゲートの実装CLLocationManagerDelegate詳細な説明については、こちらを参照してください。

于 2013-01-29T10:12:19.943 に答える
1

そのために、2つの方法で問題を解決する関数を作成しました。1つ目は位置情報サービスが有効になっているかどうかを確認し(デバイスの最初の位置情報設定)、2つ目はユーザーがアプリを承認したかどうかを確認します。

- (bool)locationAvailable
{
    if (!([CLLocationManager locationServicesEnabled]) || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
        return FALSE;
    else
        return TRUE;
}
于 2013-01-29T11:34:39.717 に答える
1

以下のように試すことができます:

 #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_2
    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized))  
 #else 
    if ([CLLocationManager locationServicesEnabled])    
 #endif
于 2013-01-29T10:13:47.817 に答える