Ios 通过[peripheralManager StartAvertising:]发出的iBeacon将触发另一个设备上的进入区域,随后是退出区域

Ios 通过[peripheralManager StartAvertising:]发出的iBeacon将触发另一个设备上的进入区域,随后是退出区域,ios,ibeacon,Ios,Ibeacon,我试图从AirLocate示例代码中获取iBeacon广告代码,并将其放入一个空的应用程序中。它看起来像: NSDictionary *peripheralData = nil; region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:beaconUuid] major:beaconMajor minor:beaconMinor identifier:be

我试图从AirLocate示例代码中获取iBeacon广告代码,并将其放入一个空的应用程序中。它看起来像:

    NSDictionary *peripheralData = nil;

    region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:beaconUuid] major:beaconMajor minor:beaconMinor identifier:beaconIdentifier];
    peripheralData = [region peripheralDataWithMeasuredPower:nil];//[NSNumber numberWithInt:power]

    // The region's peripheral data contains the CoreBluetooth-specific data we need to advertise.
    if(peripheralData)
    {
        [peripheralManager startAdvertising:peripheralData];

        return YES;
    }
空应用程序能够发出iBeacon信号,该信号可由另一台设备上的另一个应用程序成功监控。但问题出现在另一个应用程序上,locationManager:didEnterRegion:delegate方法后面紧跟着locationManager:DideExitRegion:非常快

外围设备:iPad mini 2视网膜 中央设备:iphone5s

运行AirLocate应用程序,分别将一个设备配置为iBeacon发射器,另一个设备配置为监视器,也可以重现上述问题

其他一些调查结果:

如果你只是让receiver应用保持原样,它会报告 在几分钟内自动输入区域,然后 很快就解决了,还是一样的问题。 如果按home(主页)按钮将发射器应用程序移动到背景模式并输入 同样的应用程序,接收器将触发另一轮的这两个 监测方法,还是一样的问题。 我的猜测是iBeacon广告的频率很小,比如说,几秒钟一次,以至于接收者在再次收到包裹之前可能会认为该区域已退出。这也可能是iOS中的一个bug


有人知道吗?

请注意,您不能在后台将iOS作为iBeacon进行传输。如果出现锁屏,您将很快在另一台设备上收到退出通知


默认情况下,iOS设备以30 Hz的频率发送广告,但同样,应用程序必须位于前台。我已经用硬件嗅探器测量过了。所以我怀疑发射频率是个问题。

我想用一些有趣的东西更新我自己的问题

在我将两端升级到本周发布的iOS 7.1.2(解决了iBeacon稳定性修复问题)后,情况有了一点改善:在我自己的应用程序测试中,接收端将在输入事件后一分钟报告退出事件,之前它发生在输入事件后不久。如果我在两端使用定位信标,我观察到同样的不稳定性

我做的另一个测试是使用第三部没有升级到7.1.2的iOS 7.1手机作为接收器,它根本不会从外设掉下来。正如预期的那样稳定。因此,问题可能与接收器设备有关。中环

所以我的第一个iPhone接收器上的蓝牙模块似乎有问题。我希望这不是因为它上的蓝牙调试太多造成的:

如果我使用原版iPadMini2作为外围设备,使用这款iPhone5S作为中央设备,问题总是可以观察到的。然而,如果我使用第三台iPhone-iphone5,如果它的类型是外围设备,而这个可疑的iPhone-5s仍然是中央设备,那么它是相当稳定的

因此,如果您遇到相同的奇怪问题,以下是建议:

在两侧升级iOS 在接收器设备上重新启动蓝牙 又称作中央有时会解决问题,如果不总是在您的 情况
在我的测试中,emitter应用程序总是在前台。使用气路输送可以重现问题。还有其他想法吗?也许问题出在rceiving应用程序中。您可以尝试使用应用商店中提供的AirLocate接收或定位信标吗?谢谢您的建议!不幸的是,即使我在两台设备上使用贵公司的Beacon Locate应用程序,我仍然可以在本地通知中看到问题。检查此屏幕截图:。从中您还可以看到,物理Estimote信标对于监控来说更加稳定。。