CLBeacon - 如何更改rssi,主要和次要?

Eug*_*ene 1 objective-c core-location ibeacon

我的问题基本上是 - 如何修改iBeacon的默认设置,如major,minor和RSSI?

dav*_*ung 14

根据iBeacon的含义,有不同的方法来设置这些值:

  1. 硬件iBeacons

    每个Beacon供应商都有不同的设置这些值的方法.有些通过蓝牙服务进行更改,通常使用专有的iOS或Android应用程序进行管理.(示例包括Radius Networks的电池供电和USB信标以及TwoCanoes信标.)Radius Networks的PiBeacon包含一个带有包含标识符的可编辑文件的SD卡.像Estimote这样的其他供应商使用无法更改的固定UUID创建信标.由于没有标准机制,因此没有用于在所有信标类型上设置标识符的通用工具.

  2. iOS软件iBeacons:

    您可以使用以下代码设置这些值:

    CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6"] major:1 minor:1 identifier:@"com.radiusnetworks.iBeaconExample"];
    NSDictionary *peripheralData = [region peripheralDataWithMeasuredPower:-55];
    [_peripheralManager startAdvertising:peripheralData];
    
    Run Code Online (Sandbox Code Playgroud)
  3. iOS CLBeacon

    所述CLBeacon类不旨在创建或由用户修改-它应该通过被构造CoreLocation它检测iBeacons时.也就是说,您可以使用KVO语法强制写入其只读属性,如下所示:

    CLBeacon * iBeacon = [[CLBeacon alloc] init];
    [iBeacon setValue:[NSNumber numberWithInt:1] forKey:@"major"];
    [iBeacon setValue:[NSNumber numberWithInt:1] forKey:@"minor"];
    [iBeacon setValue:[NSNumber numberWithInt:-55] forKey:@"rssi"];
    [iBeacon setValue:[[NSUUID alloc] initWithUUIDString:@"2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6"] forKey:@"proximityUUID"];
    NSLog(@"I constructed this iBeacon manually: %@", iBeacon);
    
    Run Code Online (Sandbox Code Playgroud)

    但是,如果你强迫CLBeacon以不同的方式使用类,那可能意味着你做错了.

完全披露:我为Radius Networks工作.