在我的应用中,如果用户不允许访问其当前位置,我可以通过以下方法接收该消息
- (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;
}
}
}
如何第二次询问用户权限?
我搜索并得到答案否,如果用户希望应用访问他/她的位置,他/她如何设置应用以使用他们当前的位置?
是删除应用程序并下载另一个应用程序唯一的解决方案吗?
答案 0 :(得分:5)
这只是我还是什么?有几个这样的问题。每个都可以通过用户应该做的来重新启用位置服务,而不是程序员应该做什么来获得宝贵的一致警报。
呼叫
[singleton.locationManager startUpdatingLocation];
这实际上是警报的爆发点。
如果您不打电话,则警报不会显示。
如果您首先检查它是否已启用,然后仅在启用时才调用它,则警报不会显示。
我花了几周时间搞清楚这一点。互联网上没有关于此的任何信息。
答案 1 :(得分:3)
我想是的。删除应用程序并下载另一个应用程序是唯一的解决方案,因为该应用程序而不是iPhone操作系统不会激活要求用户访问位置设置的警报消息,因此在我看来,您无法以编程方式询问它。
答案 2 :(得分:2)
我认为您可以从设备设置启用定位服务 - >位置服务选项卡..请参见下图
<强>更新强> 当应用程序的位置服务关闭时,位置管理器将触发错误,错误代码为 kCLErrorDenied ,然后您可以向用户显示警报以启用设置中的位置服务..
或者,您也可以使用以下代码
if (![CLLocationManager locationServicesEnabled])
答案 3 :(得分:0)
您可以在设备中手动重置位置设置 - &gt;隐私权 - >位置,然后重新启动您的应用。
答案 4 :(得分:0)
这需要由用户完成。
在ios 7中: 设置 - &gt;常规 - &gt;限制 - &gt;如果不是,则打开 - &gt;在隐私 - 位置服务下