如果 locationServicesEnabled 返回 false,我会提示用户启用其定位服务。以下 URL 适用于 10.0+,将用户重定向到"设置"应用并直接重定向到"定位服务"屏幕:
URL(字符串: "App-Prefs:root=Privacy&path=LOCATION"(
但是,这在iOS 11中不起作用。它会打开"设置"应用,但不会向下钻取到"定位服务"。有人知道iOS 11 +的新URL是什么吗?
Apple在此链接上发布了他们明确允许的URL列表。 不幸的是,如果您使用其他URL(例如您尝试使用的URL(,这可能会使您的应用程序从App Store中被拒绝。
简短回答:如果不违反App Store规则,您就无法做您想做的事情。
在iOS 15中,这对我不起作用,因为它只是打开常规设置页面,但根据shivi_shub答案和他的评论,我尝试了以下内容:
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "(UIApplication.openSettingsURLString)&path=LOCATION_SERVICES/(bundleId)")
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
它把我带到了位置设置,这至少离我真正想要显示的设置页面更近了几步。
所以我想我们可以做:
if let url = URL(string: "(UIApplication.openSettingsURLString)&path=LOCATION_SERVICES") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
使用这个-
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
使用应用偏好可能会导致应用商店中的应用被拒绝。
或者你也可以试试这个——
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "(UIApplication.openSettingsURLString)&path=LOCATION/(bundleId)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}