3

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

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

我的 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

4

1 回答 1

0

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

退出事件触发通常需要 30 秒没有“听到”信标,但在这种情况下,我观​​察到进入和退出快速连续发生,就像它完全忽略了 30 秒计时器一样,所以我相信这一点实际上并不是由 iOS 无法“听到”信标引起的。

我还尝试过在我的公寓和办公室周围设置而CLCircularRegion不是CLBeaconRegion(因此,使用 GPS 地理围栏而不是信标地理围栏)进行监控,并且我观察到相同的、零星的、不稳定的进出。

不幸的是,我还没有设法解决这个问题。也许如果我们共同开始与 Apple 一起打开错误报告,他们会对此进行调查。

于 2015-11-22T19:37:35.113 回答