【问题标题】:How to get location services to keep prompting if users says "no" [duplicate]如果用户说“不”,如何让位置服务继续提示 [重复]
【发布时间】:2012-07-21 00:33:23
【问题描述】:

可能重复:
CLLocation ask again for permission
How to prompt user to turn on Location Services…again

如果用户说“不”,我希望“使用您当前的位置”提醒继续提示。

目前在我正在开发的应用程序中,如果用户说“不”,提示将不再显示。我想知道如果它们返回视图控制器,如何保持提示/警报有效。

感谢您的帮助

【问题讨论】:

  • 这不会让用户非常沮丧吗?
  • 当然,唯一的问题是,它问了一次之后,就再也没有问过,也没有返回表数据结果。因此,如果他们误触“否”,则该应用程序将毫无用处:D
  • 我认为这最好改写成“如果用户不小心拒绝了,如何让位置服务重新提示用户获取位置权限”
  • 是的,这是一个更好的措辞。谢谢

标签: iphone objective-c ios mapkit


【解决方案1】:

我很确定它的设计目的是只询问一次(并且有充分的理由)。您可以检查您的应用是否启用了定位服务,并弹出“请启用定位服务...”之类的消息。

编辑:您可以检查是否启用了位置服务

[CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized

【讨论】:

  • 好的,那么就保持原样吧。谢谢!
【解决方案2】:

每当您尝试调用 startUpdatingLocation 之类的方法时,Corelocationmanager 都会触发 - (void)locationManager:didFailWithError:(NSError *)error。因此,您可以使用以下代码检查用户是否拒绝了位置监控。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
      if([error code] == kCLErrorDenied){
        //Alert view
      }
}

您可以通过重置位置警告再次启用核心位置警报。转到设置>常规>重置>重置位置警告。您还可以添加警报视图,要求用户定向到设置应用程序并在那里重置位置警告。在警报视图委托中使用以下代码打开设置应用程序。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2011-12-05
    • 2022-01-19
    • 2020-03-12
    • 2015-10-04
    • 2015-01-05
    • 2011-03-29
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多