你好。我正在开发一个应用程序,可以组织用户在徒步旅行时的移动记录。所以我想鼓励用户一直使用Precise Location选项。但是,我看到很多弹出窗口要求我在其他应用上设置位置权限,但我找不到一个弹出窗口或UX要求我打开已经关闭的Precise Location,这样要求是否违反Apple's policy?如果你不违反,我想知道其他应用程序是如何要求用户打开权限的。
Precise Location
Apple's policy
gc0ot86w1#
您可以使用CLLocationManager的CLAccuracyAuthorization属性来确定用户是否具有完全/降低的准确度。请注意,这在iOS 14 / macOS 11中可用。
switch locationManager.accuracyAuthorization { case .fullAccuracy: // TODO: handle fullAccuracy case .reducedAccuracy: // TODO: handle reducedAccuracy - request temporary full accuracy @unknown default: // TODO: handle default }
如果结果是.reducedAccuracy,则可以使用requestTemporaryFullAccuracyAuthorization(withPurposeKey:completion:)请求对.fullAccuracy的临时访问。不要忘记填写NSLocationTemporaryUsageDescriptionDictionary并在上述功能中使用适当的键。它看起来像这样
.reducedAccuracy
.fullAccuracy
5cg8jx4n2#
您可以通过显示UIAlertController(其中包含您需要它的原因说明以及导航到应用设置的操作),要求用户启用精确定位。当他们按下操作时,您将以同样的方式导航到应用设置:
UIAlertController
func navigateToSystemSettings() { if let settingsUrl = URL(string: UIApplication.openSettingsURLString) { if UIApplication.shared.canOpenURL(settingsUrl) { UIApplication.shared.open(settingsUrl, completionHandler: { (success) in print("Settings opened: \(success)") // Prints true }) } } }
呈现简单UIAlert:
func presentAlert() { let alert = UIAlertController(title: "Precise location", message: "Please enable precise location by tapping location -> precise location", preferredStyle: .alert) let action = UIAlertAction(title: "Navigate to settings", style: .default) { _ in self.navigateToSystemSettings() } alert.addAction(action) DispatchQueue.main.async { self.present(alert, animated: true) } }
此外,在显示UIAlertController之前,最好呈现一些屏幕截图,其中一些箭头指向设置中的"精确位置"开关,这样用户应该做什么就更清楚了。
navigateToSystemSettings()
2条答案
按热度按时间gc0ot86w1#
您可以使用CLLocationManager的CLAccuracyAuthorization属性来确定用户是否具有完全/降低的准确度。请注意,这在iOS 14 / macOS 11中可用。
如果结果是
.reducedAccuracy
,则可以使用requestTemporaryFullAccuracyAuthorization(withPurposeKey:completion:)请求对.fullAccuracy
的临时访问。不要忘记填写NSLocationTemporaryUsageDescriptionDictionary并在上述功能中使用适当的键。
它看起来像这样
5cg8jx4n2#
您可以通过显示
UIAlertController
(其中包含您需要它的原因说明以及导航到应用设置的操作),要求用户启用精确定位。当他们按下操作时,您将以同样的方式导航到应用设置:呈现简单UIAlert:
此外,在显示
UIAlertController
之前,最好呈现一些屏幕截图,其中一些箭头指向设置中的"精确位置"开关,这样用户应该做什么就更清楚了。navigateToSystemSettings()
函数应打开您的应用程序设置。如果它只打开普通的"设置",请通过将应用程序上传到testflight来修复此问题,以便它出现在"设置"应用程序底部显示的其他应用程序中。