0

を使用してデバイスの現在の位置を取得しようとしていますCLLocationManage。ボタンのクリックで場所を取得する方法を設定しました。正常に位置情報を取得できますが、alertview で " APPNAME は現在の位置情報を使用しますか? " というメッセージが表示され、"許可しない" と " OK "という 2 つのボタンが表示されます。「許可しない」をクリックします。次に、ボタンをクリックすると、そのアラートビューを再度取得して現在の場所を取得できないため、場所を取得できません。ボタンをクリックして位置を取得するたびにアラートビューを取得することは可能ですか?

4

3 に答える 3

1

ユーザーにとって、選択された回答は正しいものです。

ただし、あなたがプログラマーで、ユーザーにアラートを通知したい場合は、

[singleton.locationManager startUpdatingLocation];

これにより、位置情報サービスが無効になるたびにアラートが自動的にポップされます。

よくある間違いは、位置情報の更新が有効になっているかどうかを確認し、そうでない場合はわざわざ startUpdatingLocation を呼び出さないことです。

その場合、アラートは表示されません。

于 2013-04-21T21:54:36.907 に答える
1

この回答を追加して、そのシナリオをより効率的に処理できるようにします。

現在の場所の許可ダイアログを再度強制する方法はありませんが、できることは、ユーザーがアプリでの場所の使用を拒否したというステータスをトラップすることですCLLocationManagerDelegate

- (void)locationManager:(CLLocationManager*)aManager didFailWithError:(NSError*)error
{
    switch([error code])
    {
    case kCLErrorDenied: // Location access denied
    NSLog(@"Sorry, this app needs to access your current location... ");
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"" message:@"Sorry, this 
    app needs to access your current location. You can navigate to settings in your 
    phone > privacy >location services, over there you can see services are off for you 
    application. You can turn it on to give permissions"  
    delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
    //show the alert view
    [myAlert show];
    break;

    case kCLErrorNetwork: // received n/w error
    NSLog(@"Network error occurred");
    }
}
于 2013-04-18T06:07:13.013 に答える