停止测距信标区域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了停止测距信标区域相关的知识,希望对你有一定的参考价值。

我正在开发一个具有巡视模式选项的信标应用程序。因此,当用户点击开关打开巡视时,我正在创建信标区域并使用下面的代码我正在监听信标

NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:beacon.beaconID];
CLBeaconRegion *region  = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:[beacon.major integerValue] minor:[beacon.minor integerValue] identifier:beacon.identifier];

[self.locationManager startMonitoringForRegion:region];
region.notifyEntryStateOnDisplay = YES;      
region.notifyOnEntry = YES;
region.notifyOnExit = YES;
[self.locationManager startRangingBeaconsInRegion:region];

现在停止测距,我知道我必须使用

    [self.locationManager stopRangingBeaconsInRegion:region];

但是如何获得为监控创建的相同CLBeaconRegion?我应该将CLBeaconRegion保存在数组中吗?

答案

CLLocationManager有一个名为rangedRegions的财产,这是目前所有地区的NSSet。所以如果你做的事情如下:

for (CLBeaconRegion *region in self.locationManager.rangedRegions) {
    [self.locationManager stopRangingBeaconsInRegion:region];
}

如果你想停止所有地区的测距。

另一答案

让我告诉你我们如何首先为所有可用的信标设置范围,然后如何监控特定的信标。

    NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:beacon.beaconID];

    CLBeaconRegion *region  = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:beacon.identifier];

    [self.locationManager startRangingBeaconsInRegion:region];

这将为您提供Range中与uuid匹配的所有可用信标。

然后你需要开始监控特定的信标。(比如信标)

     CLBeaconRegion *region  = [[CLBeaconRegion alloc] initWithProximityUUID:beacon.uuid major:[beacon.major integerValue] minor:[beacon.minor integerValue] identifier:beacon.identifier];

     [self.locationManager startMonitoringForRegion:region];

     region.notifyEntryStateOnDisplay = YES;      
     region.notifyOnEntry = YES;
     region.notifyOnExit = YES;

当您进入或离开信标区域时,这将通知您

如果您需要其他任何东西,请告诉我

以上是关于停止测距信标区域的主要内容,如果未能解决你的问题,请参考以下文章

iOS 在后台监控/测距信标会消耗大量电池

在对iBeacons进行测距和监控之后,蓝牙设备无法连接,直到重置蓝牙

从 iBeacon 接近控制视图

是否在相同的 BLE 扫描中收到信标监视和测距回调

进入信标区域时如何在后台作为信标做广告

信标测距与 BLE 扫描