在didRagneBeacon中处理进入与退出

你好,请教个问题,目前我在enter方法中开始startRange,在didRangeBeacon方法中处理获取的iBeacon,取得最近的iBeacon通知给用户进入区域,但这样startRange会不间断的提示用户进入,停不了,如果用stopRange的话,就不能获取离开区域的判断了。如果不停的ragne,耗电量很大。这种情况怎么处理?我没有在enter与exit中进行处理进入与退出的,因为没有初始化UMM

range耗电量 还行吧,
只有应用在激活状态才会range。

我们想应用在后台的时候也扫描,比如走到一个商户或商场附近,就给用户弹出通知,这样的话,range就必须在后台运行吧?而且是不间断的运行

如果一直处于后台,那么耗电就是必须的呀,
跟你gps定位一样,后台耗电量肯定会大。

如果多个beacon的话,想在后台进行监测进入退出,那就只能在didRangeBeacon中进行初始化UMM了?

didRangeBeacon 只需要初始化uuid的region 就行了呀。这个稍微测试了就知道了呀。

恩,目前就是app启动时开始startMonior的,然后在enter中进行startRange,代码如下:_region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:[uuid UUIDString]];
_region.notifyOnEntry = YES;
_region.notifyOnExit = YES;
_region.notifyEntryStateOnDisplay = YES;
[_rangedRegions addObject:_region];

                        [_locationManager startMonitoringForRegion:_region];
  • (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
    {
    CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;

    [_locationManager startRangingBeaconsInRegion:beaconRegion];

}

然后在didRangeBeacon中处理获取的beacon,然后自定义进入和退出,当app退到后台时,range还是不断继续的,是这样造成的耗电,因为我们的app,需要在后台的时候,可以出发地理围栏,所以如果不初始化UMM进行minor的话,要在后台range的

如果你们既需要监控多个beacon,又需要后台监控,monitored满足不了的情况下,那么就只能后台range。你可以看微信,也是通过前台摇一摇进行相关活动的(range)。

1 Like