Ios 管理罗盘校准警报

Ios 管理罗盘校准警报,ios,objective-c,iphone,core-location,cllocationmanager,Ios,Objective C,Iphone,Core Location,Cllocationmanager,根据苹果公司文件: - (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager 如果此方法返回YES,Core Location将显示标题 立即在当前窗口顶部显示校准警报 如果此方法返回NO或未提供实现 在代理中,“核心位置”不显示标题 校准警报。即使未显示警报,也可以进行校准 当任何干扰磁场移开时,仍然会自然发生 从设备上 我想要苹果公司记录的确切行为,即如果返回否或不提供实施警报,则

根据苹果公司文件:

- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager
如果此方法返回YES,Core Location将显示标题 立即在当前窗口顶部显示校准警报

如果此方法返回NO或未提供实现 在代理中,“核心位置”不显示标题 校准警报。即使未显示警报,也可以进行校准 当任何干扰磁场移开时,仍然会自然发生 从设备上

我想要苹果公司记录的确切行为,即如果返回否或不提供实施警报,则不会显示

我的行为正好相反。我尝试了以下方法:

  • 我没有提供上面提到的方法实现。 结果:仍然收到校准警报

  • 我提供了方法实现并返回YES/NO,并尝试了这两种方法。 结果:仍然收到校准警报,似乎对实施没有影响。

  • 注意:方法实现时正在调用方法实现。

    我也做了很多研究,在stackoverflow上也发现了一些类似的问题,但没有从他们中得到解决方案

    我们将非常感谢您的帮助。 提前谢谢

    添加源:

    self.locationManager = [[CLLocationManager alloc] init];
      self.locationManager.delegate = self;
      self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
      self.locationManager.distanceFilter = 10.0;
    
    #ifdef __IPHONE_8_0
    
      if (IS_IOS8_AND_UP) 
        [self.locationManager requestAlwaysAuthorization];
    #endif
      [self.locationManager startUpdatingLocation];
      [self.locationManager startUpdatingHeading];
    
    
    - (BOOL)locationManagerShouldDisplayHeadingCalibration:
                (CLLocationManager *)manager {
      return NO;
    }
    

    在显示校准窗口之前调用此方法。

    是否调用了此方法?我准备了一个快速样本,它似乎按照预期工作。您是否可以包含设置
    CLLocationManager
    的代码?@David:添加了源代码,每次显示校准窗口之前都会调用该方法。使用几乎完全相同的代码(
    requestAlwaysAuthorization
    没有条件化),事情完全按照预期/记录的方式进行。@David:你的意思是说从“requestAlwaysAuthorization”中删除“if(IS(IS IOS8)和“IS UP)”这个条件?