最近因为有蓝牙打印这方面的需求上身,需要用到蓝牙的这个功能,所以对于这个方向进行了一系列的了解,在这里记录一下自己的理解。
概述
在iOS中,想要使用蓝牙功能的话,苹果提供了4个框架可用于实现蓝牙连接,每种方式的都有些不同,这里我都会简单介绍。
1.ExternalAccessory.framework (MFi)
- 可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内很少)
- MFi:(make for iPhone/iPad/iTouch)专门为苹果设备制作的设备
2.GameKit.framework (用法简单)
- 它只能用于iOS设备、同一程序之间的连接
- 主要用于为游戏添加一些比较有趣的功能,比如Game Center。
- 从iOS7之后开始过期。
3.MultipeerConnectivity.framework (代替GameKit)
- iOS7开始引入,即使在没有连接到WiFi(WLAN)或移动网络(xG)的情况下,距离较近的Apple设备之间可基于蓝牙和WiFi(P2P WiFi)技术进行发现和连接实现近场通信。
- 这个框架扩充的功能与利用AirDrop传输文件非常类似,可以将它看作苹果对我们不能直接使用AirDrop的一种补偿,代价是需要自己实现。
- 相比AirDrop,Multipeer Connectivity在进行发现和会话时并不要求同时打开WiFi和蓝牙,也不像AirDrop那样强制打开这两个开关,而是根据条件适时选择使用蓝牙或(和)WiFi。
- 主要用于非联网状态下,通过wifi或者蓝牙进行文件共享(仅限于沙盒的文件),多用于附近无网聊天
- 粗略测试情况如下:
- 双方WiFi和蓝牙都未打开:无法发现。
- 双方都开启蓝牙:通过蓝牙发现和传输。
- 双方都开启WiFi:通过WiFi Direct发现和传输,速度接近AirDrop(Reliable速率稍低),不知道同一WLAN下是否优先走局域网?
- 双方都同时开启了WiFi和蓝牙:应该是模拟AirDrop,通过低功耗蓝牙技术扫描发现握手,然后通过WiFi Direct传输。
4.CoreBluetooth.framework(时下热门)
- 可用第三方设备的蓝牙交互,但必须要支持蓝牙4.0
- 主机硬件至少4S,系统至少iOS6
- 目前应用比较多的案例:运动手环,智能家居,嵌入式设备
AirDrop
在上面聊到了AirDrop,那么我在这里也说说对于他的了解吧
- 苹果在2010年推出了AirDrop功能,仅允许在两台Mac中进行无线传输。在14年苹果打通了与iOS移动设备之间的跨平台飞速传输。
- 该功能允许两台iOS设备之间无线传输文件。 不要求双方必须联网或连接到同一局域网,但必须同时打开WiFi和蓝牙,且进行传输的两台设备必须保持在一定的范围之内。
- 根据官方资料显示,AirDrop基于蓝牙和WiFi实现(AirDrop does the rest using Wi-Fi and Bluetooth)。 具体来说,通过低功耗蓝牙技术(BLE)进行发现(Advertising/Browsing),使用WiFi Direct(P2P WiFi)技术进行数据传输。 可参考《iOS 7的AirDrop是利用什么信号来传输的?》
结语
在这里,我主要需要利用蓝牙打印这个功能,在苹果所给出的这几个蓝牙库中,只有CoreBluetooth.framework这个框架适合。所以选择了CoreBluetooth这个框架进行一系列的蓝牙开发,下来我的中心将会主要放在CoreBluetooth这个框架中。