从CLLocationManager授权警报

问题描述:

检测按钮按下我检测用户是否已经接受了我的应用程序使用位置服务的要求,我在这取决于这种接受的UI切换开关。他们第一次切换开关(打开)时,会触发使用位置的请求。我想知道他们在该警报中按哪个按钮。 (接受或拒绝)现在我只是把它切换开来,让用户再次按下它(然后检测他们选择了哪个选项)。从CLLocationManager授权警报

这是一种草率的那个样子,所以我想知道是否有检测这种特定警报的方式,也可以不是这样做,因为它是由OS,而不是应用程序触发?我还没有尝试过,但想我可以使用只是普通的按钮按下的UIAlertView委托方法,但希望更具体的东西。

UPDATE

我能够通过仅注册的通知,当我触发定位请求(和示出了授权提示),以得到这个工作。应用程序处于非活动状态(很像下拉通知栏)。我只是在应用程序变为活动状态时触发通知,我只能在那里查询授权状态并更新我的UI。我希望这可以帮助其他任何人如果他们想要即时处理授权状态。

没有办法拦截警报。然而,在CLLocationManagerDelegate方法中有一种方法叫didChangeAuthorizationStatus。这可能是最接近拦截警报的。

+0

这有效。我可能应该深入挖掘一下。我想我可以完成这项工作。谢谢! –

+0

解决一个问题,但创建另一个问题。让我抓住变化接受,但如果他们拒绝......它在技术上没有改变,所以它对我没有任何帮助。解决方案在那里......只需要弄明白。但我认为这是继续下去的最佳答案。 –

+0

我建议根据此答案中的委托方法进行触发,然后使用我给出的方法来确定交换机的状态。很简单... – HackyStack

没有办法明确知道用户选择了哪个按钮,因为正如你所说,此警报来自OS。但是,您可以了解位置服务是否已启用您的应用,并且知道这种方式。使用方法如这样:

-(BOOL)locationServicesIsEnabled 
{ 
    if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager  authorizationStatus]) 
    return NO; 
return YES; 
} 
+0

正如我所说的,虽然不是很清晰,我已经检测用户是否已经接受与否。我只想拦截警报,以便在一次操作中更新我的用户界面,而不是破解它,或者让用户切换两次开/关开关。 –

+0

没有批准拦截它的方式,我不知道有任何黑客攻击(未经批准的方式)。如果你想想要访问的信息,那么你应该很清楚,苹果公司不会让你这么做......对不起。 – HackyStack

+0

绝对不会寻找“未经批准”,因为这个应用程序目前在App Store中。只是寻找更好的方法。我将不得不尝试提醒代表...也许能够以这种方式将其视为我的“黑客”。 –