我的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
答案 0 :(得分:0)
我在我的演示/测试应用程序中观察到了非常偶然的类似行为。我尝试将信标设置为最大Tx功率和100毫秒广告间隔,但它没有帮助,这让我相信它可能是核心位置本身的错误。我已经看到Estimote SDK(构建在Core Location之上)的这种不稳定的行为,但也在纯Core位置。
通常需要30秒才能“听到”触发退出事件的信标,但在这种情况下,我正在快速连续地观察进入和退出,就像它完全忽略了30秒计时器一样,所以我相信这实际上并不是因为iOS无法“听到”灯塔造成的。
我还尝试在我的公寓和办公室周围设置监控CLCircularRegion
而不是CLBeaconRegion
(因此,GPS地理围栏而不是信标地理围栏),我观察到了同样的情况,零星的,不稳定的进出。
不幸的是,我还没有设法找到修复/解决方法。也许如果我们集体开始向Apple开放错误报告,他们会调查一下。