1

我正在检测用户是否已接受在我的应用程序中使用位置服务的请求,我在 UI 中有一个取决于此接受的切换开关。他们第一次切换开关(打开)时,会触发使用位置的请求。我想知道他们在那个警报中按下了哪个按钮。(接受或拒绝)现在我只是将其关闭并让用户再次按下它(然后检测他们选择了哪个选项)。

这种方式有点草率,所以我想知道是否有办法检测到这个特定的警报,或者因为它是由操作系统而不是应用程序触发的,所以不能这样做?我还没有尝试过,但我想我可以将UIAlertView委托方法用于通用按钮按下,但希望有更具体的东西。

更新

当我触发位置请求(并显示授权提示)时,只需注册一个通知,我就能够完成这项工作。应用程序处于非活动状态(很像下拉通知栏)。我只是在应用程序激活时触发通知,并且我可以在那里查询授权状态并更新我的 UI。如果他们想即时处理授权状态,我希望这可以帮助其他任何人。

4

2 回答 2

5

没有办法拦截警报。但是,有一个CLLocationManagerDelegate方法叫做didChangeAuthorizationStatus。这可能是您最接近拦截警报的方式。

于 2012-11-12T17:54:19.760 回答
0

无法明确知道用户选择了哪个按钮,因为正如您所说,此警报来自操作系统。但是,您可以查明您的应用程序是否已启用位置服务,并以此方式了解。使用这样的方法:

-(BOOL)locationServicesIsEnabled
{
    if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager     authorizationStatus])
    return NO;
return YES;
}
于 2012-11-12T17:31:25.907 回答