可以看看这个,希望对你有帮助
>
第一种方法:
使用CMD命令指示符或者Windows Powershell,由于两种方式 *** 作逻辑相同,以CMD为例,
1打开CMD(非管理员模式运行即可,如提示权限不足则使用管理员模式运行),输入命令ipconfig /all后按enter键
2框中出现命令返回的内容后,鼠标滚轮下拉找到“以太网适配器 蓝牙网络连接”,下方的“物理地址”后划红的部分即为蓝牙的“物理地址(MAC)”。
第二种方法:
此方法较为简单,
打开Win10系统的“设置”-“网络和Internet”-“查看网络属性”后
鼠标滚轮下拉找到“蓝牙网络连接”就可看到蓝牙的“物理地址(MAC)”
公司的项目是医疗类的项目,所以这段一直在和蓝牙打交道。我使用的是苹果原生的框架CoreBluetooth。在对接几个蓝牙设备的过程中,也遇到一些坑,下文我会一一列举。 git上有个库 BabyBluetooth 基于原生CoreBluetooth框架进行了封装,使用起来也很方便,大家可以尝试一下。 那么我们开始吧!
需要注明,下面的UUID是我的蓝牙设备中的Service和Characteristic的UUID,要注意根据自己的蓝牙
设备提供的Service和Characteristic的UUID来替换
这里有几个问题值得注意:
1 在ios中蓝牙广播信息中通常会包含以下4种类型的信息。ios的蓝牙通信协议中不接受其他类型的广播信息。因此需要注意的是,如果需要在扫描设备时,通过蓝牙设备的Mac地址来唯一辨别设备,那么需要与蓝牙设备的硬件工程师沟通好:将所需要的Mac地址放到一下几种类型的广播信息中。通常放到kCBAdvDataManufacturerData这个字段中。
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = XXXXXX;
kCBAdvDataManufacturerData = <XXXXXXXX>;
kCBAdvDataTxPowerLevel = 0;
2 设备的UUID(peripheralidentifier)是由两个设备的mac通过算法得到的,所以不同的手机连接相同的设备,它的UUID都是不同的,无法标识设备。
3 苹果与蓝牙设备连接通信时,使用的并不是苹果蓝牙模块的Mac地址,使用的是苹果随机生成的十六进制码作为手机蓝牙的Mac与外围蓝牙设备进行交互。如果蓝牙设备与手机在一定时间内多次通信,那么使用的是首次连接时随机生成的十六进制码作为Mac地址,超过这个固定的时间段,手机会清空已随机生成的Mac地址,重新生成。也就是说外围设备是不能通过与苹果手机的交互时所获取的蓝牙Mac地址作为手机的唯一标识的。(这是在与写蓝牙设备的固件工程师联调时根据问题的现象推测的。至于苹果蓝牙通讯协议的底层是否确实完全像我所说的这样,希望了解的读者能提供帮助。在此先谢过。)
需要注意的是这里是对kCGMCharacteristicOneUUID这个特性进行写入,这里之所以这样 *** 作是因为我的蓝牙设备的蓝牙协议是这样定义的,所以这里不要照抄照搬,要按照你的蓝牙设备的通讯协议来确定,对哪一个特性进行read,对哪个特性进行write,以及对哪个特性进行设置Notify
需要注意的是这里读取蓝牙信息 (但并不是在返回值中接收,要在
这个回调方法中接收)
只连接到最好的
蓝牙开发连接最好用Mac地址
iOS获取蓝牙外设的Mac地址的两种方法
iOS 获取蓝牙外设的Mac地址的两种方法 -
有MacBook的人很多都拥有iPhone,有时候无论在工作或者是学习中都会遇到两个设备之间相互传输文件的情况。很多人第一时间想到了蓝牙,本次简单讲解一下MacBook 蓝牙的使用。
1、打开iPhone的AirDrop: Wifi 和 蓝牙都要打开,然后所有联系人可见。(mac 与iPhone 要在同一个WiFi 下)。
2、打开MacBook的蓝牙。
3、打开 MacBook的 AirDrop, 注意要保持 iPhone 屏幕常亮,使用MacBook的AirDrop 进行传输:只需要将文件拖到发现的头像上。
4、实际测试下蓝牙40的传输速率大概在09Mbps,而AirDrop的测试速率在27Mbps左右,也就是说 AirDrop的传输 是 蓝牙40 的 3倍,并且稳定性更加高,所以苹果也是在主推让用户使用AirDrop。
在ios中ibeacon是基于地理位置的微定位技术(从这句话中可以得出Introduced in iOS 7, iBeacon is an exciting technology enabling new location awareness possibilities for apps),虽然借助手机蓝牙进行接收Majro、Minor,但是他们在开发工程中没有任何关系。
ibeacon使用苹果提供CoreLocation库,然而在BLE在开发过程中使用CoreBluetooth库。从上面提供的库来看就很清楚了,特别是在IOS8之上的时候如果想使用ibeacon,必须让用户点击是否允许“App使用地理位置”。如果在第一次使用ios app扫描ibeacon的时候没有提示这句话是不可能接收到ibeacon的信号(除非ios 80之下)。如果是BLE则的开发过程中之需要提示用户打开蓝牙,并不要求其他的地理位置任何信息。
第一:在ios中所有的数据都是通过API获取的,也就是说在IOS中不会看到蓝牙模块的裸数据(在这里的裸数据就代表蓝牙模块发送的16进制的数据),只能拿到苹果公司提供的极个别的API中的数据。
第二:ble、ibeacon各使用各自的API,他们之间没有任何对应关系。如果想使用ble就不可能获取到ibeacon的major、minor、uuid等信息,如果使用ibeacon,没有办法发起链接请求获取服务。
第三:在ios中ibeacon通信数据只有
这个六个属性,其分别含义是“ proximityUUID major、minor表示ibeacon的uuid,major、minor;proximity就是苹果提供的几个表示距离的属性CLProximityUnknown(没有数据),CLProximityImmediate(十厘米以内),CLProximityNear(一米以内),CLProximityFar(一米以外)”。
“在很多硬件人员的眼中认为,ibeacon和ble没有区别啊,我们都是在同一个模块上面开发的,只是发送的数据格式不一样,ibeacon应该和ble没有区别,ios可以获取数据按照我们给的通信协议进行解析就可以啊。”这个就犯了我刚才所说的一个错误,在ios的开发过程中ibeacon和ble是两个不同的东西,所有的数据都被苹果拦截了,只给开发者特定的api可以调用。虽然从硬件上面来看没有任何区别但是在开发过程中确实两个不同的东西。但是有很多的厂商又想让ble具有ibeacon的类似的功能,比如可以让app获取到major、minor这个又怎么办?让ios的app获取ble的MAC地址等等功能(说明一下,ios是不能直接获取ble的mac地址的)?在这里(只是我个人的意见也是我在工作中得到的一些方法)是我的建议,一般很多ble正在发送发现广播的时候携带了“kCBAdvDataServiceData”信息,可以把ibeacon的major、minor放在kCBAdvDataServiceData的数据区域,然后让app根据协议截取响应的信息。也可以放到其他的信息中,这要看公司的策略。
如果有一款iOSble的巡检App(非ibeacon的App)可以用BLE扫描出ibeacon的信息,他的App肯定不是直接扫描ibeacon,这一点可以从两个方面进行验证第一:是否使用用户的地理位置,第二:拿一个其他厂家的标准ibeacon,(ibeacon的uuid一定不要一样,因为ios在扫描ibeacon的时候一定要指定需要扫描的uuid,换一个uuid
app都不可能扫描到)。通过上面两点可以很好的判定app是巡检ble还是ibeacon。
总结上面所有的观点,如果想使用ios的app巡检ble又能巡检ibeacon,一定要在蓝牙模块的广播数据中做文章。怎么做文章需要各厂商自己权衡。
iPhone用户可以在未打开App情况下(App被用户开启过,并且授权使用蓝牙以及定位,并且蓝牙处于开启状态),收到IBeacon设备(蓝牙外设设备)广播的信息,并短暂的激活该App (约10秒)去执行一些方法。
根据IBeacon设备的发射范围,确定用户当前的状态:进入、持续监听、离开。然后做出不同的响应
蓝牙扫一扫;区域推送;活动现场互动(配对,寻宝等);签到,蓝牙锁(应用内手动签到、开锁或者点亮屏幕即可签到、开锁)。
蓝牙连接打印机
>
以上就是关于ios蓝牙开发怎么快速获取当前手机连接的设备全部的内容,包括:ios蓝牙开发怎么快速获取当前手机连接的设备、求解蓝牙有mac地址吗、ios:和蓝牙过过招等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)