iOS iBeacon监控随机触发

时间:2015-11-20 10:00:34

标签: ios monitoring estimote beacon

我的iOS应用程序中有一个非常奇怪的行为。虽然在大多数情况下信标监控工作正常,但有时会连续多次触发 didEnterRegion didExitRegion 事件。信标本身就在手机旁边(大约15厘米),因此根本不应该是 didExitRegion 。我知道有可能松开一个触发退出的信标信号,但它在3分钟内触发了大约5次(进入和退出 - 所以10次通话)。这是一种非常罕见的行为,似乎是随机的。

信标来自 Estimote 并通过Estimote App设置为 -20dBm 的广播功率,应该是大约3.5米/ 12英尺(根据Estimote App)和广告间隔 2000ms

我的CLLocationManager初始化

if (! _locationManager) {
    _locationManager = [[CLLocationManager alloc] init];

    if ([_locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
        // Not available in iOS 8
        _locationManager.allowsBackgroundLocationUpdates = YES;
    }

    // For iOS 8
    if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [_locationManager requestAlwaysAuthorization];
    }

    _locationManager.pausesLocationUpdatesAutomatically = NO;

    _locationManager.delegate = self;
}

我是如何开始监控的

- (void)startMonitoringForBeaconRegions {
    for (CLBeaconRegion *currentBeaconRegion in _beaconRegions) {
        //default should be YES
        currentBeaconRegion.notifyOnEntry = YES;
        currentBeaconRegion.notifyOnExit = YES;
        [_locationManager startMonitoringForRegion:currentBeaconRegion];
    }

}

有没有人对他们的信标有类似的行为,也许是解决方案?

亲切的问候, Kyaak

1 个答案:

答案 0 :(得分:0)

我在我的演示/测试应用程序中观察到了非常偶然的类似行为。我尝试将信标设置为最大Tx功率和100毫秒广告间隔,但它没有帮助,这让我相信它可能是核心位置本身的错误。我已经看到Estimote SDK(构建在Core Location之上)的这种不稳定的行为,但也在纯Core位置。

通常需要30秒才能“听到”触发退出事件的信标,但在这种情况下,我正在快速连续地观察进入和退出,就像它完全忽略了30秒计时器一样,所以我相信这实际上并不是因为iOS无法“听到”灯塔造成的。

我还尝试在我的公寓和办公室周围设置监控CLCircularRegion而不是CLBeaconRegion(因此,GPS地理围栏而不是信标地理围栏),我观察到了同样的情况,零星的,不稳定的进出。

不幸的是,我还没有设法找到修复/解决方法。也许如果我们集体开始向Apple开放错误报告,他们会调查一下。