我想要拥有与地图应用程序相同的功能,用户每次按下“当前位置”按钮打开他们的位置服务时,如果他们关闭了,都会得到提示:
get获取位置’打开位置服务...‘消息显示“设置”和“取消”按钮。
按下’获取当前位置‘按钮<代码>H113应用程序再次尝试使用CLLocationManager获取位置<代码>H214<代码>H115用户不再收到’打开位置服务...‘消息<代码>H216<代码>F217
在地图应用程序中,用户会看到“打开位置服务...”每次都会发信息。我怎样才能让我的应用程序做同样的事情呢?我让用户我正在使用一个新的CLLocationManager实例,以防这是问题所在,但事实并非如此。我看不到任何会影响这一点的设置。
如果我创建自己的警报,我将无法获得相同的“设置”按钮功能。另外,我不希望用户看到多个看起来相同的警报。
有什么想法吗?
发布于 2014-09-11 03:38:39
iOS 8中新增了一个名为UIApplicationOpenSettingsURLString的常量。
在UIKit下的"What's new in iOS"文档中有一行:
您可以将用户直接带到设置应用程序中与您的应用程序相关的设置。将
UIApplicationOpenSettingsURLString常量传递给UIApplication类的openURL:方法。
来自苹果的documentation
UIApplicationOpenSettingsURLString
用于创建可传递给openURL:方法的URL。当您打开基于此字符串构建的URL时,系统将启动设置应用程序并显示应用程序的自定义设置(如果有)。
您可以将其传递给UIApplication openURL:方法。它可能看起来像这样:
NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:settings])
[[UIApplication sharedApplication] openURL:settings];发布于 2012-02-13 07:25:23
如果你想让用户返回设置应用程序中的定位服务屏幕,你可以通过将他们发送到一个特殊的URL来实现,如下所示:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]];发布于 2011-05-14 06:59:04
如果开启了定位服务,您可以查询共享CLLocationManager实例。正确的做法是尊重用户的选择,关闭位置服务。
但如果你愿意,只要启动定位服务,用户就会被提示再次启动它。如果用户选择加入请求,您的代表将照常开始报告位置。相反,如果用户拒绝您的请求,您将收到locationManager:didFailWithError:委托方法的失败回调。该错误的错误代码为kCLErrorDenied。
我强烈建议您不要这样做,但如果用户拒绝,您可以尝试再次启动该服务,系统会再次询问该用户。不过,大多数用户会因此而讨厌你。
https://stackoverflow.com/questions/5998465
复制相似问题