每次都获得当前位置的警报

时间:2013-04-18 05:44:14

标签: iphone ios objective-c cllocationmanager

我正在尝试使用CLLocationManage获取设备当前位置。我设置我的方法来获取按钮点击的位置。我可以成功获取位置但是当我收到带有“ APPNAME想要使用您当前位置的消息”的alertview时,有两个按钮,“不允许”和“确定”。然后我点击“不允许”。然后,每当我点击按钮,我不能再获得该alertview以获取当前位置,所以我无法获得该位置。因此,每当我点击我的按钮获取位置时,是否可以获得alertview?

3 个答案:

答案 0 :(得分:3)

当您在提醒时点击“不允许”按钮时,您的应用程序的位置权限将受到限制。

您可以导航至手机中的设置>隐私>位置服务,在那里你可以看到服务是关闭你的应用程序。您可以将其打开以授予权限

答案 1 :(得分: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");
    }
}

答案 2 :(得分:1)

为用户选择的答案是正确的。

但是,如果您是程序员,并且希望用户收到警报通知,则应致电

[singleton.locationManager startUpdatingLocation];

每当我按照您的意愿禁用位置服务时,这将自动弹出警报。

常见的错误是检查位置更新是否已启用,如果不是,则不要打扰调用startUpdatingLocation。

如果是这种情况,则警报不会显示。