*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Librar

iOS项目集成百度地图的时候必须设置后台模式,而AppStore上线时,项目中没有用到后台定位,导致2.16被拒,苹果要求你勾选掉Background Modes 中的Location Updates

但是当你勾选掉这个后台模式后,程序crash。crash原因如下:

*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1861.3.25.49/Framework/CoreLocation/CLLocationManager.m:609

断言失败:提示需要设置后台模式

冲突问题对比:

1.程序不勾选后台模式:

*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1861.3.25.49/Framework/CoreLocation/CLLocationManager.m:609

2.程序勾选上后台模式,但是app中没有用到后台定位:

苹果被拒反馈:2.16 - Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.

解决方案:

在项目中创建CLLationManager的类目,并导入到.pch文件中作为全局的,使用runtime方式来监听,代码如下:


#import "CLLocationManager+Extend.h"

#import <objc/runtime.h>


@implementation CLLocationManager (Extend)


+ (void)load {

    

    if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0) {

        method_exchangeImplementations(class_getInstanceMethod(self.class, NSSelectorFromString(@"setAllowsBackgroundLocationUpdates:")),

                                       class_getInstanceMethod(self.class, @selector(swizzledSetAllowsBackgroundLocationUpdates:)));

    }

    

}


- (void)swizzledSetAllowsBackgroundLocationUpdates:(BOOL)allow {

    if (allow) {

        NSArray* backgroundModes  = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIBackgroundModes"];

        

        if( backgroundModes && [backgroundModes containsObject:@"location"]) {

            [self swizzledSetAllowsBackgroundLocationUpdates:allow];

        }else{

            NSLog(@"APP想设置后台定位,但APPinfo.plist里并没有申请后台定位");

        }

    }else{

        [self swizzledSetAllowsBackgroundLocationUpdates:allow];

    }

}


@end



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sailip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值