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