如何第二次请求用户许可以允许访问当前位置?

时间:2013-03-26 06:56:29

标签: iphone ios objective-c core-location cllocationmanager

在我的应用中,如果用户不允许访问其当前位置,我可以通过以下方法接收该消息

- (void)locationManager:(CLLocationManager*)aManager didFailWithError:(NSError*)anError
{
    switch([anError code])
    {
       case kCLErrorLocationUnknown: 
        break;

        case kCLErrorDenied:
        {
           UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Access Denied" message:@"You didn't allow to access your current location" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [alert show];
          break;
        }
    }
 }

如何第二次询问用户权限?

我搜索并得到答案否,如果用户希望应用访问他/她的位置,他/她如何设置应用以使用他们当前的位置?

是删除应用程序并下载另一个应用程序唯一的解决方案吗?

5 个答案:

答案 0 :(得分:5)

这只是我还是什么?有几个这样的问题。每个都可以通过用户应该做的来重新启用位置服务,而不是程序员应该做什么来获得宝贵的一致警报。

呼叫

[singleton.locationManager startUpdatingLocation];

这实际上是警报的爆发点。

如果您不打电话,则警报不会显示。

如果您首先检查它是否已启用,然后仅在启用时才调用它,则警报不会显示。

我花了几周时间搞清楚这一点。互联网上没有关于此的任何信息。

答案 1 :(得分:3)

我想是的。删除应用程序并下载另一个应用程序是唯一的解决方案,因为该应用程序而不是iPhone操作系统不会激活要求用户访问位置设置的警报消息,因此在我看来,您无法以编程方式询问它。

答案 2 :(得分:2)

我认为您可以从设备设置启用定位服务 - >位置服务选项卡..请参见下图

enter image description here

<强>更新 当应用程序的位置服务关闭时,位置管理器将触发错误,错误代码为 kCLErrorDenied ,然后您可以向用户显示警报以启用设置中的位置服务..

或者,您也可以使用以下代码

if (![CLLocationManager locationServicesEnabled])

答案 3 :(得分:0)

您可以在设备中手动重置位置设置 - &gt;隐私权 - >位置,然后重新启动您的应用。

答案 4 :(得分:0)

这需要由用户完成。

在ios 7中: 设置 - &gt;常规 - &gt;限制 - &gt;如果不是,则打开 - &gt;在隐私 - 位置服务