3

iOS アプリケーションで非常に奇妙な動作をします。ほとんどの場合、ビーコン監視は正常に機能していますが、didEnterRegionおよびdidExitRegionイベントが連続して複数回発生する時間帯があります。ビーコン自体は電話のすぐ隣 (約 15 cm) にあるため、 didExitRegionはまったく存在しないはずです。出口をトリガーするビーコン信号を失う可能性があることは知っていますが、3分間に約5回トリガーされます(入り口と出口の両方-つまり10回の呼び出し)。これは非常にまれな動作であり、ランダムなようです。

ビーコンは、Estimoteからのもので、Estimote アプリを介して、約 3.5 メートル/12 フィート (Estimote アプリによる) である必要がある -20dBm のブロードキャスト電力と 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];
    }

}

誰かがビーコンとおそらく解決策で同様の動作をしていますか??

敬具、キャアク

4

1 に答える 1

0

デモ/テスト アプリで非常に時折同様の動作を観察しました。ビーコンを最大送信電力と 100 ミリ秒の広告間隔に設定して実験しましたが、役に立たなかったので、Core Location 自体のバグである可能性があると思いました。この不安定な動作は、Estimote SDK (Core Location の上に構築) と純粋な Core Location の両方で見られました。

通常、終了イベントがトリガーされるまでビーコンが「聞こえない」までに 30 秒かかりますが、このような状況では、30 秒のタイマーを完全に無視したように、開始と終了が立て続けに発生するのを観察していたので、これを信じています。実際には iOS がビーコンを「聞く」ことができないことが原因ではありません。

CLCircularRegionまた、アパートやオフィスの周りに (ビーコン ジオフェンスの代わりに GPS ジオフェンスを) 設置して監視をCLBeaconRegion試みたところ、散発的で不規則な出入りが同じように観察されました。

残念ながら、私はまだその修正/回避策を見つけることができませんでした. おそらく、私たちが Apple と一緒にバグ レポートを公開し始めれば、彼らはそれを調査するでしょう。

于 2015-11-22T19:37:35.113 に答える