Ios8 当状态为kCLAuthorizationStatusAuthorizedWhenInUse时,检查KCLAuthorizationStatusAuthorizedWays

Ios8 当状态为kCLAuthorizationStatusAuthorizedWhenInUse时,检查KCLAuthorizationStatusAuthorizedWays,ios8,cllocationmanager,Ios8,Cllocationmanager,当前状态为kCLAuthorizationStatusAuthorizedWhenInUse时,如果用户已选择不使用KClauthorizationStatusAuthorizedWays,如何在CLLocationManager中进行签入? 在我的情况下,首先用户同意使用kCLAuthorizationStatusAuthorizedWhenInUse。此外,我有一些开关在后台使用位置管理器,所以我建议用户使用后台模式。用户打开开关,我请求requestAlwaysAuthorization,

当前状态为kCLAuthorizationStatusAuthorizedWhenInUse时,如果用户已选择不使用KClauthorizationStatusAuthorizedWays,如何在CLLocationManager中进行签入?
在我的情况下,首先用户同意使用kCLAuthorizationStatusAuthorizedWhenInUse。此外,我有一些开关在后台使用位置管理器,所以我建议用户使用后台模式。用户打开开关,我请求requestAlwaysAuthorization,然后用户不确认使用此模式。以后如何检查用户选择以在交换机附近为用户设置消息?类似于您已禁用在后台使用位置更新。

您可以实现CLLocationManagerDelegate的locationManager:didChangeAuthorizationStatus:并检查可能授予/未授予的权限,并将其保存在NSUserDefaults中。

位置管理器仅报告对授权状态的更改。如果用户请求被拒绝,则不会更改。哦,对不起,我不知道。您可以做的一件事是:您知道何时显示授权对话框,因此可以将其存储在NSUserDefaults中。下次用户使用开关进入屏幕时,您已经知道显示了该对话框。如果CLLocation authorization状态为not authorization,则您知道用户一定已拒绝,您可以显示相应的消息。Hannes,这似乎是决定,但可能还有另一个问题对应于另一个问题。如果我从未显示requestAlwaysAuthorization,并且当用户在每个应用程序设置中被禁用时,如果当前状态为kCLAuthorizationStatusDenied,则我必须进行requestAlwaysAuthorization,这将首先为用户显示系统对话框。但在这种情况下,我不知道我应该运行requestAlwaysAuthorization还是应该显示位置服务已禁用的警报。我认为这是一个简单的决定:如果使用时状态未确定或未授权,则运行requestAlwaysAuthorization,如果拒绝,则显示带有授权选项的警报。此选项将通过UIApplication.sharedApplication.openURLNSURLstring:uiapplicationopensetingsurlstring将他带到应用程序设置!对但它并不是很友好,因为用户拒绝了WhenInUse模式,他也没有拒绝任何授权。在这种情况下,他从未见过授权系统警报。因此,我必须运行requestAlwaysAuthorization,即使在这种情况下该州被拒绝。