我有一个具有显式用户交互的应用程序,它利用用户的当前位置.如果用户拒绝访问定位服务,我仍希望后续使用提示用户转到设置并重新启用我的应用程序的定位服务.

我想要的是内置 map 应用程序的行为:

  1. Reset location warnings in Settings > General > Reset > Reset Location Warnings.
  2. 启动 map 应用程序.
  3. 点击左下角的当前位置按钮.
  4. 带有" map "的 map 提示想要使用您的当前位置"|"不允许"|"允许".
  5. Select "不允许"选项.
  6. 再次点击左下角的当前位置按钮.
  7. " map "提示"打开位置服务以允许" map "确定您的位置"|"设置"|"取消".

在我自己的应用程序中,同样的基本流程导致我的CLLocationManagerDelegate-locationManager:didFailWithError:方法在最后一步调用时出现kCLErrorDenayed错误,并且用户没有打开Settings应用程序来更正它的选项.

我可以显示我自己的alert 来响应错误,但它不能启动设置应用程序,而不能像内置 map 应用程序那样启动操作系统可以提供的alert .

在CLLocationManager类中,是否有我缺少的东西能够让我产生这种行为?

推荐答案

使用iOS8,您最终可以通过openURL将用户链接到设置应用程序.例如,您可以使用单个按钮创建一个UIAlertView,将用户带到设置应用程序:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:ICLocalizedString(@"LocationServicesPermissionTitle")
                                                    message:ICLocalizedString(@"LocationPermissionGeoFenceMessage")
                                                   delegate:self
                                          cancelButtonTitle:@"Settings"
                                          otherButtonTitles:nil];
    [alert show];

在UIAlertView代理中:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString: UIApplicationOpenSettingsURLString]];
}

Ios相关问答推荐

在SwiftUI中插入绘制重复形状

检测touch 并忽略其他手势SWIFT SceneKit

OnTapGesture在其修改的视图外部触发

flutter中实现自定义底部导航栏

swiftui 图像放大时无法正确拖动

使用 Objective-C 创建 iOS 框架

保存和读取登录到 keys 串不工作 IOS swift

如何在Combine发布者之间强制执行最小延迟

SwiftUI 图像与下拉视图切换一起 skip

撤销 Apple 登录令牌以进行帐户删除过程

无法为 Flutter 项目构建 ipa [CocoaPods 找不到 pod "GoogleAppMeasurement" 的兼容版本:]

我们可以在 Swift 中将 struct 中的 Codable 键设置为不区分大小写吗

CocoaPods 找不到 podFirebase/Core的兼容版本 | cloud_firestore, Flutter

使用 AVAudioPlayer 播放声音

iOS 中的 Crashlytics 不会继续通过 Fabric 应用程序中的构建您的项目

标题为 UIImage 的导航栏

针对 Xcode 中的 iPad 选项

UISegmentedControl 以编程方式更改段数

AFNetworking 2.0 向 GET 请求添加标头

iTunes Connect 中的无限制 Web 访问是什么意思