【发布时间】:2025-12-21 07:25:16
【问题描述】:
在设置 -> 常规中,有一个开关可以打开/关闭位置服务。在地图应用程序中,当位置服务关闭时,如果用户单击“查找我”按钮,它会弹出警报并要求用户在设置中打开位置服务。然后它退出应用程序并启动设置应用程序。如何在我的应用中以编程方式执行此操作?
【问题讨论】:
标签: ios iphone ipad settings core-location
在设置 -> 常规中,有一个开关可以打开/关闭位置服务。在地图应用程序中,当位置服务关闭时,如果用户单击“查找我”按钮,它会弹出警报并要求用户在设置中打开位置服务。然后它退出应用程序并启动设置应用程序。如何在我的应用中以编程方式执行此操作?
【问题讨论】:
标签: ios iphone ipad settings core-location
我没有读完整个问题!
但是,请参阅:Programmatically opening the settings app (iPhone)
(原回复:设置应用似乎没有自定义 URL 方案,所以答案似乎是“否”。)
【讨论】:
如果您只是通过 [CLLocationManager startUpdatingLocation] 使用定位服务,如果定位服务被禁用,它将自动弹出您描述的警报。
但是,当您的特定应用被用户拒绝使用位置服务时,无法强制显示警报(在 iOS 4 中,通过在位置设置中禁用您的应用,在 iOS 3 中,通过拒绝 CoreLocation 请求)应用程序的前 2 次启动)。您只会在 -locationManager:didFailWithError: 中收到 kCLErrorDenied 错误。
在这种情况下,Maps.app 确实会显示带有“设置”按钮的警报,但看起来他们为此使用了私有 API。
【讨论】:
从 iOS 5.0 开始,您可以使用“prefs://”URL 方案以编程方式打开设置应用。您在早期版本中运气不佳。
【讨论】: