如何使用相同的主要和次要停止iBeacon检测?

时间:2017-01-11 07:09:38

标签: ios objective-c swift ios7 ibeacon

如何停止检测具有相同主要和次要的iBeacons?

阐释:

1.配置两个具有相同UUID,Major,Minor

的iBeacons

2.在范围内我得到两个信标检测

3但是我只需要检测一个(如果他们使用相同的UUID_Major_Minor)

4.有没有办法避免相同的信标检测

提前感谢..

1 个答案:

答案 0 :(得分:0)

主要次要值是分配给您的iBeacons的数字,以便比单独使用UUID更准确地识别它们。

次要主要是无符号整数值。

iBeacon标准要求分配Major和Minor值。

主要值旨在识别和区分 - 例如,您所在场地的特定楼层或房间中的所有信标都可以分配唯一的主要值。

次要值旨在识别和区分个人 - 例如,区分分配了主要值的信标组中的各个信标。

您没有为iBeacons分配相同的主要次要值。从技术上讲,您根本不需要分配这些值(尽管它们都是Apple的iBeacon标准的一部分) - 但是它们对于识别,组织和跟踪iBeacons非常有用。如果您希望iBeacons提供独特的内容,那么他​​们需要有一个唯一的ID来区分它们。

有关详情:https://support.kontakt.io/hc/en-gb/articles/201620741-iBeacon-Parameters-UUID-Major-and-Minor

-(void)locationManager:(CLLocationManager*)manager
       didRangeBeacons:(NSArray*)beacons
              inRegion:(CLBeaconRegion*)region
{
    // Beacon found!
    CLBeacon *foundBeacon = [beacons firstObject];

    // You can retrieve the beacon data from its properties
    NSString *uuid = foundBeacon.proximityUUID.UUIDString;
    NSString *major = [NSString stringWithFormat:@"%@", foundBeacon.major];
    NSString *minor = [NSString stringWithFormat:@"%@", foundBeacon.minor];

    switch (foundBeacon.proximity) {
        case CLProximityUnknown:
            //Unknown
            break;
        case CLProximityFar:
            //Far
            break;
        case CLProximityNear:
            //Near
            break;
        case CLProximityImmediate:
        default:
            //default
            break;
    }
    if (foundBeacon.proximity != self.previousProximity) {
        //check if last foundBeacon.proximity is equal or not

         self.previousProximity = foundBeacon.proximity;
    }
}