4

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

- (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;
        }
    }
 }

如何第二次请求用户权限?

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

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

4

5 回答 5

4

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

称呼

[singleton.locationManager startUpdatingLocation];

这实际上是弹出警报的原因。

如果您不调用它,则不会显示警报。

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

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

于 2013-04-21T21:57:51.030 回答
3

我想是的。删除应用程序并下载另一个应用程序是唯一的解决方案,因为询问用户是否允许访问位置设置的警报消息不是由应用程序触发,而是由 iPhone OS 触发,因此我认为您不能以编程方式询问它。

于 2013-03-26T07:08:31.863 回答
2

我认为您可以从设备设置 -> 定位服务选项卡中打开定位服务。请参见下图

在此处输入图像描述

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

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

if (![CLLocationManager locationServicesEnabled])
于 2013-03-26T07:02:59.710 回答
0

这需要用户来完成。

在ios 7中:设置->常规->限制->如果没有打开->在隐私下-位置服务

于 2013-10-02T20:53:42.520 回答
0

您可以在您的设备Setting-->Privacy-->Location中手动重置位置,然后重新启动您的应用程序。

于 2013-03-26T07:16:54.030 回答