ios - 即使调用了 didDetermineState,也未调用 dirangebeacons

标签 ios core-location ibeacon estimote

我有一套 Estimote 信标。当我使用 estimote sdk 时,我可以为信标测距并使用它。但问题是,当我使用 iOS SDK 进行监控和测距时,根本没有调用 didRangeBeacons。

我已经开始测距,如下图所示。当我使用断点检查时,该函数被调用。

- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
    switch (state) {
        case CLRegionStateInside:
            [self.beaconManager startRangingBeaconsInRegion:self.beaconRegion];
            NSLog(@"Region CLRegionStateInside");

最佳答案

请确保您已完成以下检查 list :

  1. 您已经在您的 info.plist 中输入了 NSLocationAlwaysUsageDescription

  2. 您的属性 self.beaconRegion 是一个 CLBeacon 区域,其 UUID 与您要检测的 UUID 匹配。

  3. 您的设备是 iPhone 4S 或更新版本,运行 iOS 7 或更高版本,并且已打开蓝牙

我会将代码更改为如下所示:

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(nonnull CLRegion *)region {
    CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
            if (beaconRegion.major && beaconRegion.minor) {
            } else {
                switch (state) {
                    case CLRegionStateUnknown:
                        // Handle this case when bluetooth is off.
                        break;
                    case CLRegionStateInside:
                        NSLog(@"Inside %@", region);
                        if (![self.locationManager.rangedRegions containsObject:beaconRegion]) {
                            [self.locationManager startRangingBeaconsInRegion:[[CLBeaconRegion alloc] initWithProximityUUID:beaconRegion.proximityUUID identifier:beaconRegion.proximityUUID.UUIDString]];
                        }
                        break;
                case CLRegionStateOutside:
                    NSLog(@"Outside %@", region);
                    break;
            }
        }
    }

您只需要在 UUID 上进行测距,因为这将拾取与该 UUID 匹配的所有信标,无论主要还是次要。另请注意,如果您尚未进行测距以避免额外的函数调用,则应仅尝试开始测距

关于ios - 即使调用了 didDetermineState,也未调用 dirangebeacons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936882/

相关文章:

ios - 我将 NSString 放入 NSUUID 中,但我记录了错误的 UUID iOS

ios - 如何根据从先前 View Controller 中的另一个 FRC 检索的对象来获取 fetchedResultsController 来提供我的 TableView?

ios - 在内存不足的情况下检索图像

iOS 核心位置 : How to handle programmatically if location services are disabled from device settings

ios - 在 iBeacon 中发送附加数据

objective-c - iBeacon 每 1 分钟不断进出区域

ios - postNotification 上的 OneSignal 错误

ios - 在 ARC 下使用 dispatch_write 将 NSData 写入后台唯一文件

ios - 无法将类型 'NSMutableDictionary' 的值转换为预期的参数类型 '[String: AnyObject]?'

ios - iOS 6 中的本地化地理编码选项