即使勾选了 "Ask next time",requestLocation() 也不会请求许可

requestLocation() does not ask for permission even though "Ask next time" is ticked

我有一个变量var locationManager: CLLocationManager

在应用程序运行期间,我想请求一个一次性位置 locationManager.requestLocation().

然而,当我这样做时,代表几乎立即通知我 locationManager(manager:didFailWithError:) 即使在我的安全设置中,位置设置为“下次询问”。

当我将设置设置为“始终”时,我会收到正确的位置更新,但我不希望用户在设置中明确激活它们。 如何让我的应用请求许可?

编辑:使用说明已正确设置。

requestlocation 获取一次性位置,避免了只需要一次位置更新的连续位置更新的能量影响,但它不会提示用户位置权限。

如果您的授权状态是 .notDetermined,您需要先调用 requestWhenInUseAuthorization 并接收到授权回调,然后才能调用 requestLocation