NearbyAPI iOS未检测范围

时间:2016-08-24 08:45:28

标签: ios google-nearby

我已为我的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 < / strong>方法但是NearbyAPI如何使用这些方法在内部工作,如何让应用程序在启动时使用它检测已经在范围内的信标?

1 个答案:

答案 0 :(得分:0)

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

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

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