ios - 当我在该地区时,CLRegionState 是未知的

标签 ios core-location bluetooth-lowenergy ibeacon

我正在测试 iBeacon,我使用了 didDetermineState: 方法,当我在区域内时,CLRegionStateCLRegionStateUnknown,谁能告诉我为什么?

当我为 CLBeaconStateUnknown 设置蓝牙时,我的蓝牙已打开并检测到信标,发送方和接收方都在范围内(1 米),这是我的实现

-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{

    switch (state) {
    case CLRegionStateInside:
        currentBeconRegion = (CLBeaconRegion *)region;
        [self.locationManager startRangingBeaconsInRegion:currentBeconRegion];
        NSLog(@"INSIDE the Region");//not logging
        break;
    case CLRegionStateOutside:
        NSLog(@"OUTSIDE the Region");
        break;
    case CLRegionStateUnknown:
    default:
        NSLog(@"Region state UNKNOWN!!!"); //Logging on console
        statusLabel.text = @"Region state UNKNOWN!!!";
    //[self.locationManager stopRangingBeaconsInRegion:beaconRegion];           
    [self.locationManager startRangingBeaconsInRegion:beaconRegion];//Suceessfully ranging the beacon

        break;
    }
}

最佳答案

你说你在“区域内”,但你怎么知道 iBeacon 真的被检测到了?蓝牙是否已打开并正常工作?出现提示时用户是否允许位置访问?

我会启用 iBeacon 测距并记录检测到的任何内容,以验证您的设备是否真的看到 iBeacon。我怀疑您会发现您没有检测到任何东西,或者 iBeacon.proximity 字段可能会由于校准错误而返回 CLProximityUnknown

didDetermineState 会得到一个额外的调用,即使在您开始监控时没有检测到信标(或者如果您在 notifyEntryStateOnDisplay=YES 设置为 on 时唤醒屏幕)你所在的地区)。这是我认为您可能获得 CLRegionStateUnknown 值的唯一情况。我从来没有见过这个值返回,所以我很好奇它是在什么条件下发生的。找到我上面问题的答案可能会解决这个问题。请反馈!

关于ios - 当我在该地区时,CLRegionState 是未知的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671062/

相关文章:

objective-c - 从另一个 iOS 中减去一个图像

ios - 在iOS中如何在不使用硬件地址扫描的情况下连接到外设

iphone - 如何让 UICollectionViewFlowLayout 的单元格跨越多行?

mysql - 在 MySQL 中存储 CLLocationDegrees 时精度丢失

iOS 5 MapKit、MKPlacemark,在 iOS 5 上运行 iOS 4.3 应用程序

iphone - 是否可以仅使用区域监控 + GSM 并获得不超过 5 公里的水平精度?

android - BLE发送和接收能耗

c - 识别 C 语法

ios - iOS-使用.stringsdict的Hanling复数名词本地化-不起作用

ios - UINavigationController没有出现?