美文网首页iOS蓝牙开发程序员
iOS ble4.0获取外设MAC地址技巧

iOS ble4.0获取外设MAC地址技巧

作者: YW_Drenched | 来源:发表于2017-03-29 11:17 被阅读88次

    因为公司提出新的需求,需要在不做连接的时候获取外设的MAC地址。后来跟公司的硬件工程师讨论后,得出下面一个方法可以在不连接的时候就可以获取外设的MAC地址了。其实方法有多种。下面这篇文章有提到两种方法:(http://www.jianshu.com/p/1d6a8fc8134f) ,那么不多废话,介绍我现在使用的一种方法。

    我们都知道在这个方法中可以得到扫描周围外设的相关信息(不清楚的请点击):
    -(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
    
    那么在advertisementData中有个字段kCBAdvDataLocalName",这个字段可以放你外设的名字。那么我们当时就尝试在这个字段中把MAC地址也写进来,然后iOS这边在做一点相关的字符串的筛选就行了。
    直接在didDiscoverPeripheral:中添加此方法:
    //    筛选设备
        [self sendPeripheralArrName:advertisementData[@"kCBAdvDataLocalName"]];
    
    

    具体实现sendPeripheralArrName:方法:

        -(void)sendPeripheralArrName:(NSString *)peripheralName{
        
        NSString *newStr = [peripheralName substringWithRange:NSMakeRange(0, 4)];
        // 用来判断的条件,这个具体得看你们硬件的名字
        if ([newStr isEqualToString:@"C100"] || [newStr isEqualToString:@"C200"] || [newStr isEqualToString:@"C300"] || [newStr isEqualToString:@"D100"]) {
            if (![self.deviceArr containsObject:peripheralName]) {
                [self.deviceArr addObject:peripheralName];
            }
            for (NSString *nameStr in self.deviceArr) {
                if (nameStr.length >= 20) {
          //            截取C1000263 即前8位,这个前8位就是我们公司产品的名字。
                    NSString *devieceStr = [nameStr substringWithRange:NSMakeRange(0, 8)];
                  //  截取后面拼接的MAC地址
                    NSString *mac1 = [nameStr substringWithRange:NSMakeRange(18, 2)];
                    NSString *mac2 = [nameStr substringWithRange:NSMakeRange(16, 2)];
                    NSString *mac3 = [nameStr substringWithRange:NSMakeRange(14, 2)];
                    NSString *mac4 = [nameStr substringWithRange:NSMakeRange(12, 2)];
                    NSString *mac5 = [nameStr substringWithRange:NSMakeRange(10, 2)];
                    NSString *mac6 = [nameStr substringWithRange:NSMakeRange(8, 2)];
                    //得到的MAC地址。
                    NSString *macStr = [NSString stringWithFormat:@"%@:%@:%@:%@:%@:%@",mac1,mac2,mac3,mac4,mac5,mac6];
                    
                    [self.peripheralName addObject:devieceStr];
                    [self.peripheralMac addObject:macStr];
                    
                }
            
            }
        }
        [self.deviceTableView reloadData];
        NSLog(@"外设名字数组%@",self.deviceArr);
     
        }
    

    以上方法仅供参考,如有错误或者误导的地方,欢迎指出。

    相关文章

      网友评论

        本文标题:iOS ble4.0获取外设MAC地址技巧

        本文链接:https://www.haomeiwen.com/subject/msvfottx.html