【问题标题】:didRangeBeacons gives empty array in Objective CdidRangeBeacons 在 Objective C 中给出空数组
【发布时间】:2016-03-22 06:40:25
【问题描述】:

在我的项目中,我检测到信标设备。在委托方法中,它给出了空数组值

这给出了空数组值:

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{
NSLog(@"beacons list %@ ",beacons);
}

更新:

- (void)viewDidLoad
{
    [super viewDidLoad];
 NSUUID *uuid=[[NSUUID alloc]initWithUUIDString:UUID];
    clBeconRegion=[[CLBeaconRegion alloc]initWithProximityUUID:uuid identifier:@"BluetoothExample"];
    [locManager startMonitoringForRegion:clBeconRegion];
    clBeconRegion.notifyEntryStateOnDisplay=YES;
}

【问题讨论】:

  • 您是否为信标设置了正确的 UUID?
  • 是的。我正在设置正确的 UUID
  • 能否请您出示用于设置信标测距的代码?这应该包括:区域构建、设置 CLLocationManager 委托、请求位置权限以及在 .plist 文件中添加权限字符串。如果您可以验证您是否可以使用现成的检测器应用程序(如Locate)来检测传输信标,这也会很有帮助
  • 我更新了问题

标签: objective-c cllocationmanager ibeacon


【解决方案1】:

为了让didRangeBeacons返回一个非空数组,需要调用如下方法:

[self.locationManager startRangingBeaconsInRegion:beaconRegion];

此外,我会确保您附近的信标具有相同的 UUID,并且您已在 info.plist 中输入 NSLocationAlwaysUsageDescription。还要确保你已经创建了你的 locationManager 并设置了它的委托。

【讨论】:

  • 你用什么来广播信标信号?
  • ipad mini & beacon 真机
  • 我也试过这个 [locManager requestStateForRegion:clBeconRegion];它只给出 CLRegionStateOutside 和 CLRegionStateUnknown,帮帮我
  • 看来您的信标实际上并没有在广播,或者至少不是您正在寻找的信号。请确认您的信标确实在广播指定的信号,并且您的 iPad mini 已打开蓝牙并允许始终访问位置
  • 我检查了信标在该应用程序中找到的另一个应用程序,并且我检查了蓝牙已打开且位置始终可以访问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多