在我的应用程序中,我有以下代码;
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Start location services
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.locationManager requestAlwaysAuthorization];
}
locationManager = [[CLLocationManager alloc] init];
etc...
不知何故,当我进行全新安装时,一旦位置管理器启动,该应用程序就会进入循环,重复“您是否允许此应用程序使用位置服务”-对话框比我单击“确定”或取消。
摆脱这个循环的方法是切换到“设置”并手动 批准使用。
这是 iOS8,我确实在 .plist 中添加了强制性字符串。
我该怎么办?
最佳答案
您的问题是您在 applicationDidBecomeActive
中请求权限 - 当显示权限对话框时,您的应用程序变为非事件状态(因为有一个系统对话框处于事件状态),然后一旦对话框被关闭再次变为事件状态 - 但尚未处理权限,因此会显示对话框等等。
您应该在另一种方法中请求位置权限 - applicationDidFinishLaunchingWithOptions:
或在您的 View Controller 或您想要实例化您的 CLLocationManager
的其他类中 - didBecomeActive
不是执行此操作的好地方。
关于ios - App 进入 LocationManager 批准循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210748/