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

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

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在写这个博客之前,空余时间抽看了近一个月的文档和Demo,系统给的解释很详细,接口也比较实用,唯独有一点,对于设备...
    木易林1阅读 8,681评论 3 4
  • 现在有关物联网开发的蓝牙设备都是基于蓝牙4.0的 也就是#import <CoreBluetooth/CoreBl...
    弗雷德里希大王阅读 2,586评论 0 0
  • 这里我们具体说明一下中心模式的应用场景。主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应用。一般...
    丶逝水流年阅读 6,749评论 3 4
  • 本文主要以蓝牙4.0做介绍,因为现在iOS能用的蓝牙也就是只仅仅4.0的设备 用的库就是core bluetoot...
    暮雨飞烟阅读 4,298评论 0 2
  • 在遇见你们之前 我很难想象这样素未谋面的人 会对自己产生这么大的影响 高三的夏天 异常的烦躁,闷热 未志浩的无意引...
    未森林1108阅读 2,299评论 0 1