iOS 蓝牙获取MAC地址

援引: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
{
    //获取mac
    NSLog(@"%@ ",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

时间: 2024-10-21 03:05:22

iOS 蓝牙获取MAC地址的相关文章

C#获取MAC地址

/// <summary> /// 获取MAC地址(返回第一个物理以太网卡的mac地址) /// </summary> /// <returns>成功返回mac地址,失败返回null</returns> public string getMacAddress() { string macAddress = null; try { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterface

Python windows下获取MAC地址的一种方法

我最近有一个项目,使用Python在win32下开发一个COM组建,该COM组建其中一个方法是获取本地电脑的MAC地址. 需求很简单,虽然我是Python新手中的新手,但我还是会使用搜索引擎进行搜索. 百度一下,发现大部分都介绍使用import UUID获取MAC地址,或使用os.popen("ipconfig /all")的方式获取.而后者容易受到操作系统中英文环境影响. 如这篇文章:http://www.cnblogs.com/Jerryshome/archive/2011/11/

android 获取MAC地址

由于WiFi 的Mac address 是一个被动咨询.一般在开机后,不会主动上到的系统里.要等待WiFi硬件启动后,才会把有关Mac address资料记载入系统去. 所以一般android系统获取Mac address时候会出现以下几种情况: 1.在WiFi打开的时候可以获取到Mac地址 2.关闭WiFi,不重启系统,也可以获取到Mac address 3.系统重启后,不打开WiFi,获取不到Mac address 4.系统重启后,不开开WiFi,打开2G.3G网络,获取不到Mac addr

android获取Mac地址和IP地址

获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信息获取本地Mac public static String getLocalMacAddressFromWifiInfo(Context context){ WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_

C#获取MAC地址的几种方法

首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0x00, NCBRESET = 0x32, NCBASTAT = 0x33, NUM_NAMEBUF = 30, } [StructLayout(LayoutKind.Sequential)] public struct ADAPTER_STATUS { [MarshalAs(UnmanagedTy

【转载】获取MAC地址方法大全

From:http://blog.csdn.net/han2814675/article/details/6223617 Windows平台下用C++代码取得机器的MAC地址并不是一件简单直接的事情.到目前为止,作者尚未发现有任何一个通用的100%的适用于所有Windows平台的方法可以稳定的取得MAC地址.而有些应用(比如MMORPG)则需要稳定的得到机器的MAC地址,解决方案往往是通过多种方法依次使用来提高成功率. 说明: 以下方法只会返回多网卡的第一个MAC地址. 网上有很多文章和源码来解

C# 获取mac地址 本机或者 远程的

/// 获取本机网卡mac地址代码 /// </summary> /// <returns></returns> /// /// <summary> public string GetNetworkAdpaterID() { try { string mac = ""; System.Management.ManagementClass mc = new System.Management.ManagementClass("Wi

Delphi 获取MAC 地址

function GetMacAddress(index:integer):string;var   ncb : TNCB;                {NetBios控制块}   AdapterS : TAdapterStatus; {网卡状态结构}   LanaNum : TLanaeNum;       {Netbios Lana}   i : integer;   rc : Char;                 {NetBios的返回代码}   str : String;beg

java获取mac地址-屏蔽ip封mac地址

首先要说的是:可以支持外网机器的mac地址获取.  以前弄了一个只能访问局域网. 有防火墙就访问不了, 但是这个不用担心了. 测试了百度的ip,已经可以获得mac地址 测试效果图: java通过ip获取mac地址-封ip封mac地址 版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载.