iOS 蓝牙获取MAC地址

news/2025/6/19 18:04:34

援引:http://www.jianshu.com/p/1d6a8fc8134f

iOS要获取蓝牙设备的MAC地址有两种:一是硬件工程师开通的服务特征下有MAC的信息,我们就从通道中获取;二是硬件工程师在扫描中设备信息中放置MAC信息,我们从有RSSI的函数中获取

1.形如你所在其他网站上看到的在某写板子模块上的服务如:"A180"的,其下均有获取到MAC的特征。此处我们略过,因为其他地方说的很清楚了,援引处也有。需要硬件配和加入服务特征。

2.就是在有RSSI的函数中获取。

首先先让硬件工程师在板子模块上写入mac 的信息。

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *, id> *)advertisementData RSSI:(NSNumber *)RSSI
{//获取macNSLog(@"%@ ",peripheral);NSLog(@"%@ ",peripheral.name);NSLog(@"%@ ",peripheral.identifier.UUIDString);NSData *data = [advertisementData objectForKey:@"kCBAdvDataManufacturerData"];NSString *aStr= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//    NSString *mac = [NSStringTool convertToNSStringWithNSData:data];aStr = [aStr stringByReplacingOccurrencesOfString:@" " withString:@""];NSLog(@"aStr:%@",aStr);NSLog(@"advertisementData:%@",advertisementData);// 一个周边可能会被多次发现if (![_peripheralArr containsObject:peripheral]) {[_peripheralArr addObject:peripheral];if ([self.delegate respondsToSelector:@selector(bleManagerUpdateDeviceList)]) {[self.delegate bleManagerUpdateDeviceList];}}
}

可以看到有一个 advertisementData ,这个字典类型的就是广播包,这里面会有一些设备的属性,比如设备的名字啊,服务啊等,但是都是被苹果限制了的,所以并不是你硬件工程师想广播什么都可以的。
这个字典里有一个:只有这个key是可以放入信息的,所以叫硬件工程师将Mac地址写到这个字段里去,这样你就可以在发现设备的过程中得到Mac地址了~!

key:kCBAdvDataManufacturerData

转载于:https://www.cnblogs.com/gaozhang12345/p/6513893.html


https://dhexx.cn/news/show-3380705.html

相关文章

FXS/FXO, BRI/PRI, IPPBX

FXO - Foreign Exchange Office 外部交换局。简单的理解它是 PBX 交换机上用来同公共电话网相连的接口。也就是是中央交换局交换机和数字电话交换系统之间的一个中继端连接。相对于中心局而言&#xff0c;它模拟一台PABX分机&#xff0c;可实现一部普通电话机与一部多路复用器的…

如何修改linux用户密码?

如果是以root身份登录,修改root密码.只要输入 passwd 就会出现: New password: Retype new password: 按提示输入密码确认即可. 如果想更改其他用户密码,只要输入passwd username即可. 如&#xff1a;hadoop用户&#xff08;passwd hadoop&#xff09;New password: Retyp…

SQL之TCL

TCL&#xff08;Transaction Control Language&#xff09;事务控制语言 COMMIT 提交SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTION 转载于:https://www.cnblogs.com/Skyyj/p/6514874.html

线程池java.util.concurrent.ThreadPoolExecutor总结

http://uule.iteye.com/blog/1123185 线程池还具有提高系统性能的优点&#xff0c;因为创建线程和清除线程的开销比较大。 有两种不同类型的线程池&#xff1a;一是固定线程数量的线程池&#xff1b;二是可变数量的线程池。 对于固定数量的线程池&#xff0c;可以使用Executors…

javaweb里html的一些基本代码意义(学)

<html> <head> <title>body.text属性示例</title> </head> <body text"red"> body.text属性示例 </body> </html> 设置字体红色结果就是红色的“body.text属性示例”&#xff0c;用text属性实现。 <html>和&l…

java读取properties报文件找不到路径

aplication.properties如下&#xff1a;zhangsanshandonglisihenan1、普通java项目&#xff1a;Properties pro new Properties(); //读取属性文件a.properties InputStream in new BufferedInputStream (new FileInputStream("application.properties&q…

转:关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

1. JSON.parse(jsonString): 在一个字符串中解析出JSON对象 ?123var str [{"href":"baidu.com","text":"test","orgId":123,"dataType":"curry","activeClass":"haha"}]; JSON.p…

剑指offer--快速排序

//思想&#xff1a;实现快速排序的关键是首先在数组中选择一个数字&#xff08;这里随机选取&#xff09;作为枢纽元&#xff0c;将枢纽元与数组中最后的元素交换使得枢纽元 //离开要被分割的数据段,将数组中比枢纽元小的元素都移动数组的左边&#xff0c;将数组中比枢纽元大的…

mysql 5.7在win 10 下的安装及配置

详情请参考百度经验http://jingyan.baidu.com/article/af9f5a2d16fa4d43150a4552.html

追根朔源java中的集合的toString

首先有这样一个问题&#xff1a; List<String> list new ArrayList<String>();list.add("zhangsan");list.add("lisi");System.out.println(list);那么这样打印的结果会是什么那&#xff1f;[zhangsan, lisi]那么问题来了&#xff0c;‘[]’是…