因为小弟搞了很长时间关于蓝牙设备得APP 所以对这边比较了解
因为iOS自从7以后就无法或取设备的MAC地址 网上有人说把它加到蓝牙的广播包里但是这样的话对硬件来说负担很大 而且芯片会不稳定。我这边是将蓝牙的MAC地址写在蓝牙设备系统的sevrice 里
如图:
一般的蓝牙芯片了都有这个 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;
}
}