【问题标题】:Getting wrong minor and major value of estimote beacon错误估计信标的次要和主要值
【发布时间】:2014-07-25 11:16:32
【问题描述】:

我正在开发 Estimote 信标并制作演示应用程序以找出最近的信标 Minor 和 Major 值。但是当我检查 estimote 示例应用程序时,我得到了正确的主要和次要值,但是当我在我的项目中使用该代码时,它给了我错误的次要和主要值。

这是我的代码:-

typedef enum : int
{
    ESTScanTypeBluetooth,
    ESTScanTypeBeacon

} ESTScanType;


- (id)initWithScanType:(ESTScanType)scanType completion:(void (^)(ESTBeacon *))completion
{
    self = [super init];
    if (self)
    {
        self.scanType = scanType;
        self.completion = [completion copy];
    }
    return self;

}
- (void)viewDidLoad
{
    [super viewDidLoad];

  self.beaconManager = [[ESTBeaconManager alloc] init];
    self.beaconManager.delegate = self;

   self.region = [[ESTBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:BEACONUUID1]
        identifier:@“AllBeacons”];
    if (self.scanType == ESTScanTypeBeacon)
    {
        [self.beaconManager startRangingBeaconsInRegion:self.region];
    }
    else
    {
        [self.beaconManager startEstimoteBeaconsDiscoveryForRegion:self.region];
    }

    // Do any additional setup after loading the view from its nib.
}
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    /*
     *Stops ranging after exiting the view.
     */
    [self.beaconManager stopRangingBeaconsInRegion:self.region];
    [self.beaconManager stopEstimoteBeaconDiscovery];
}

#pragma mark - ESTBeaconManager delegate

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
{
    self.beaconsArray = beacons;

    [tblView reloadData];
}

- (void)beaconManager:(ESTBeaconManager *)manager didDiscoverBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
{
    self.beaconsArray = beacons;

    [tblView reloadData];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    __weak  BeconsDetailCell *cell=(BeconsDetailCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"BeconsDetailCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

     ESTBeacon *beacon = [self.beaconsArray objectAtIndex:indexPath.row];

    //beacon name

    cell.lblBeaconname.text = @"Estimote Beacon";


    //Beacon major

    NSString *strMajor = [NSString stringWithFormat:@"%@",beacon.major];
    strMajor = [strMajor stringByReplacingOccurrencesOfString:@"-" withString:@""];
    cell.lblBeaconMajor.text = strMajor;

    //Beacon minor

    NSString *strMinor = [NSString stringWithFormat:@"%@",beacon.minor];
    strMinor = [strMinor stringByReplacingOccurrencesOfString:@"-" withString:@""];
    cell.lblBeaconMinor.text = strMinor;

    //Beacon distance

    switch (beacon.proximity)
    {
        case CLProximityUnknown:
            cell.lblBeaconDistance.text = @"Unknown";
            break;

        case CLProximityFar:
            cell.lblBeaconDistance.text = @"Far";
            break;

        case CLProximityNear:

            cell.lblBeaconDistance.text = @"Near";
            break;

        case CLProximityImmediate:
            cell.lblBeaconDistance.text = @"Immediate";
            break;

        default:
            break;
    }
    return cell;
}

提前致谢。

【问题讨论】:

    标签: ios iphone ibeacon estimote


    【解决方案1】:

    如果您参考ESTBeacon class 的文档,您将看到主要和次要是NSNumbers,尽管可以在字符串上下文中评估 NSNumber 以通过 description 方法获取值,但这是不是访问数值的正确方法。

    你应该使用

    if (beacon.major != nil) {
       cell.lblBeaconMajor.text= [NSString stringWithFormat:@"%ld",[beacon.major intValue]];
    }
    else {
       cell.lblBeaconMajor.text=@"";
    }
    
    if (beacon.minor != nil) {
       cell.lblBeaconMinor.text= [NSString stringWithFormat:@"%ld",[beacon.minor intValue]];
    }
    else {
       cell.lblBeaconMinor.text=@"";
    }
    

    【讨论】:

    • 感谢您的重播,但问题是我得到的信标主要和次要值不正确。
    • 你有多少个信标?我注意到,当您发现信标时,您只需重新加载阵列。数组可能正在重新排序。还有你说的错是什么意思?不同的数字?零点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2015-08-29
    • 2014-11-12
    相关资源
    最近更新 更多