美文网首页iOS数据转换iOS Developer
iOS 与蓝牙操作如何获取MAC地址

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

作者: 弗雷德里希大王 | 来源:发表于2017-04-12 14:25 被阅读4204次

因为小弟搞了很长时间关于蓝牙设备得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;

}

}

相关文章

网友评论

  • Xanthuim:用systemID当MAC地址不太好吧,这个还有其他作用
    一曰就是一天:@弗雷德里希大王 大侠,我根据你的日志,尝试了下,获取不到啊 ,方法用的都一样,请问你是如何获取道的?
    弗雷德里希大王:@Xanthuim 因为我们公司用的蓝牙芯片出厂的MAC地址和systemID里面的一样
    之后就算修改也都是整到systemid里面了
  • JoyceZhao:您好,我是一名iOS蓝牙开发的小白,请问,iOS想要获取蓝牙的mac地址,只能通过蓝牙广播中加数据,或加通道吗?

本文标题:iOS 与蓝牙操作如何获取MAC地址

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