0

我已经为我的 Objective-C 项目设置了 Google Nearby API 来扫描信标。

该应用程序在进入信标范围时可以正常检测信标,但如果我在已经在范围内时启动应用程序,它就不起作用。我必须离开信标并返回。

我没有使用后台扫描。我使用的lib版本是:0.10.0

我的代码是:

[GNSMessageManager setDebugLoggingEnabled:YES];

_messageManager = [[GNSMessageManager alloc] initWithAPIKey:@"..."];

_beaconSubscription = [_messageManager subscriptionWithMessageFoundHandler:^(GNSMessage *message) {
    NSLog(@"beacon found: %@",message);
    ...
} messageLostHandler:^(GNSMessage *message) {
    NSLog(@"beacon lost: %@",message);
    ...
} paramsBlock:^(GNSSubscriptionParams *params) {
    params.deviceTypesToDiscover = kGNSDeviceBLEBeacon;
    params.beaconStrategy = [GNSBeaconStrategy strategyWithParamsBlock:^(GNSBeaconStrategyParams *params) {
        params.includeIBeacons = YES;
    }];
}];

我知道核心位置框架didEnterRegion / didExitRegion方法,这些方法仅在跨越信标区域边界时调用,我可以使用didDetermineState方法,但 NearbyAPI 如何在内部使用这些方法以及如何让应用程序检测到使用它时已经在范围内的信标?

4

1 回答 1

0

这确实是 Nearby Messages 监控 iBeacon 区域的方式中的一个错误。它使用didEnterRegion/ didExitRegion,并且如您所述,如果您在扫描开始时已经在某个区域中,didEnterRegion则不会调用。

我已经尝试过使用didDetermineState,并且通过一些工作我现在能够处理这种情况。我们将在下一个错误修复版本中包含此内容。

同时,您可以在测试应用程序时使用以下技巧来避免该问题:将信标放入金属外壳(法拉第笼)中,并在您的应用程序开始扫描信标后将其从外壳中取出。这模拟了进入信标区域的运动。我在法拉第笼中使用了一个小型鸡尾酒调酒器,但少量铝箔也可以。

于 2016-08-30T23:01:44.230 回答