iOS 与蓝牙操作如何获取MAC地址

因为小弟搞了很长时间关于蓝牙设备得APP 所以对这边比较了解

因为iOS自从7以后就无法或取设备的MAC地址 网上有人说把它加到蓝牙的广播包里但是这样的话对硬件来说负担很大 而且芯片会不稳定。我这边是将蓝牙的MAC地址写在蓝牙设备系统的sevrice 里 

如图:

iOS 与蓝牙操作如何获取MAC地址_第1张图片

一般的蓝牙芯片了都有这个 Device information 系统服务 我们的是cc2541  里面的systemID 从右往左读 比如cd aa 05 32 01 98 这个是出厂时的硬件唯一标识 用它来当MAC地址 这样的话如果iOS操作过蓝牙设备的话也能获得了

Device information 的UUID是180A  systemID 的UUID 2A23

获得方法连接上之后直接读取





-(void)peripheral:(CBPeripheral*)peripheral didUpdateValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError*)error

{

if([characteristic.UUIDisEqual:[CBUUIDUUIDWithString:@"2A23"]])

{

NSString*value = [NSStringstringWithFormat:@"%@",characteristic.value];

NSMutableString*macString = [[NSMutableStringalloc]init];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(16,2)]uppercaseString]];

[macStringappendString:@":"];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(14,2)]uppercaseString]];

[macStringappendString:@":"];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(12,2)]uppercaseString]];

[macStringappendString:@":"];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(5,2)]uppercaseString]];

[macStringappendString:@":"];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(3,2)]uppercaseString]];

[macStringappendString:@":"];

[macStringappendString:[[valuesubstringWithRange:NSMakeRange(1,2)]uppercaseString]];

NSLog(@"MAC地址是macString:%@",macString);

_MacAddress= macString;

}

}

你可能感兴趣的:(iOS 与蓝牙操作如何获取MAC地址)