[英]Should javascript geolocation prompt user to turn on location services?
[英]How to prompt user to turn on Location Services…again
我想拥有与地图应用程序相同的功能,每当用户按下“当前位置”按钮打开位置服务时,系统会提示用户:
在地图应用中,用户每次都会收到“打开位置服务...”消息。 我怎样才能让我的应用程序也这样做? 我让用户我正在使用一个新的CLLocationManager实例,以防这是问题,但事实并非如此。 我看不到会影响这个的任何设置。
如果我自己发出警报,我就无法获得相同的“设置”按钮功能。 此外,我不希望用户看到多个看起来相同的警报。
有任何想法吗?
在iOS 8中有一个名为UIApplicationOpenSettingsURLString
的常量。
来自UIKit下的“iOS中的新功能”文档是:
您可以在“设置”应用中将用户直接带到与应用相关的设置。 将
UIApplicationOpenSettingsURLString
常量传递给UIApplication类的openURL:方法。
来自Apple的文档 :
UIApplicationOpenSettingsURLString
用于创建可以传递给openURL:方法的URL。 当您打开从此字符串构建的URL时,系统会启动“设置”应用并显示应用的自定义设置(如果有)。
您可以将其传递给UIApplication openURL:方法。 它可能看起来像:
NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:settings])
[[UIApplication sharedApplication] openURL:settings];
如果要将用户指回“设置”应用中的“位置服务”屏幕,可以将其发送到特殊URL,如下所示:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]];
如果启用了位置服务,则可以查询共享CLLocationManager
实例。 正确的方法是尊重用户选择以禁用位置服务。
但是,如果您愿意,只需启动位置服务,系统将提示用户再次启动它。 如果用户选择加入请求,将开始像往常一样在您的代表上报告位置。 如果用户拒绝您的请求,您将收到一个故障回调到locationManager:didFailWithError:
委托方法。 该错误的错误代码为kCLErrorDenied
。
我强烈建议您不要这样做,但如果用户拒绝,您可以尝试再次启动该服务,并再次询问用户。 大多数用户会讨厌你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.