iphone应用程序何时收到didChangeAuthorizationStatus:delegate呼叫?
我有一个关于iphone应用程序何时收到didChangeAuthorizationStatus:delegate呼叫?,iphone,delegates,authorization,settings,cllocationmanager,Iphone,Delegates,Authorization,Settings,Cllocationmanager,我有一个关于CLLocationManagerDelegate的问题。文档中说,如果用户更改了您位置服务的设置(在iPhone的settings.app中),那么您的应用程序应该会收到一条发送给代表的didChangeAuthorizationStatus:消息。我的问题是,什么时候会发生这种情况 如果用户更改了设置,这意味着他们在设置应用程序中,而你的应用程序要么是后台的,要么根本没有运行,那么在前一种情况下,你的应用程序的CLLocationManager代理什么时候才能获得didChang
CLLocationManagerDelegate
的问题。文档中说,如果用户更改了您位置服务的设置(在iPhone的settings.app中),那么您的应用程序应该会收到一条发送给代表的didChangeAuthorizationStatus:
消息。我的问题是,什么时候会发生这种情况
如果用户更改了设置,这意味着他们在设置应用程序中,而你的应用程序要么是后台的,要么根本没有运行,那么在前一种情况下,你的应用程序的
CLLocationManager
代理什么时候才能获得didChangeAuthorizationStatus:
调用?我一小时前刚刚遇到过这个方法,在这个问题上,这么好的时机
在我的例子中,似乎调用了此方法:
每当调用该方法时,它只会记录授权状态。如果您的应用程序正在后台运行或根本没有运行,则在用户返回应用程序时,它将被调用。此委托方法将在以下情况下被调用:
CLLocationManager
实例时
1.1。如果这是您的应用首次在设备上启动,则在用户看到[Allow/Not Allow]UIAlertView
之前,您将收到状态kCLAuthorizationStatusNotDetermined
。(此时,您可以在设置-隐私-位置服务中发现应用程序的ui开关已关闭或未显示
1.2.当用户重新启动您的应用程序时。因为在上次启动时已做出决定,所以您可以检索状态
startUpdatingLocation
/startUpdatingHeading
后,iOS将显示UIAlertView
我也遇到了同样的问题 我的解决方案是将请求gps授权码放入主循环
我想,如果您加入另一个运行循环,它也可以工作。我最近遇到了正确处理位置权限更改的问题,并进行了大量的研究和调试 如果应用程序根本没有运行,并且用户在“设置”中更改了位置权限,则当您启动应用程序时,当按照mharper的回答初始化位置管理器时,会调用locationManager:didChangeAuthorizationStatus。苹果的文档中没有此行为
如果应用程序处于后台/挂起状态,我在模拟器中对其进行了测试,看起来还调用了委托函数。这很有用。来自Apple文档(:),似乎只有在权限更改时才应该调用它,但我同意您的评估,即每次启动应用程序时都会调用它,即使在两次启动之间权限未被触及。@PaulBrewczynski是的,文档是错误的/不完整的。我认为最正确的答案是,当定位人员ager的代理是第一个设置,通常在您启动应用程序时设置。