18-蓝牙

前言:所有逐渐开源的语言都有这样一个功能,比如js今年Facebook开源了一个框架React Native,然后它就可以开发IOS的东西了,所以推测swift开源后极有可能不仅能开发IOS,还可以开发WINPhone,安卓

iOS中提供了4个框架用于实现蓝牙连接

  • 1.GameKit.framework(用法简单)
  • 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开始过期
  • 2.MultipeerConnectivity.framework(代替1)
  • 只能用于iOS设备之间的连接,从iOS7开始引入,主要用于非联网状态下,通过wifi或者蓝牙进行文件共享(仅限于沙盒的文件),多用于附近无网聊天(类似于AirDrop)
  • 关于AirDrop的几点说明
    • 最初的时候只能在Mac之间用,13年开始iPhone之间可以用,14年开始Mac和iPhone之间可以用
  • 开启AirDrop不要求双方必须联网或连接到同一局域网,但必须同时打开WiFi和蓝牙,且进行传输的两台设备必须保持在9米的范围之内
  • 手机不联网也能跟附近的人聊得火热的FireChat和See You Around等近场聊天App、近距离无网遥控交互拍照神器拍咯App就是基于Multipeer Connectivity框架实现
  • 相比AirDrop,Multipeer Connectivity在进行发现和会话时并不要求同时打开WiFi和蓝牙,也不像AirDrop那样强制打开这两个开关,而是根据条件适时选择使用蓝牙或(和)WiFi
  • 粗略测试情况如下:
    • 双方WiFi和蓝牙都未打开:无法发现
    • 双方都开启蓝牙:通过蓝牙发现和传输
    • 双方都开启WiFi:通过WiFi Direct发现和传输,速度接近AirDrop(Reliable速率稍低),不知道同一WLAN下是否优先走局域网
    • 双方都同时开启了WiFi和蓝牙:应该是模拟AirDrop,通过低功耗蓝牙技术扫描发现握手,然后通过WiFi Direct传输
  • 3.ExternalAccessory.framework(MFi)
  • 可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内很少)
  • 4.CoreBluetooth.framework(时下热门)
  • 可用于第三方蓝牙设备交互,必须要支持蓝牙4.0
  • 硬件至少是4s,系统至少是iOS6
  • 蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy)
  • 目前应用比较多的案例:运动手环,嵌入式设备,智能家居

BLE

严格来讲当枚举属性是NS_OPTIONS( 与NS_ENUM的区别 )时,一个枚举可能对应多个类型,所以判断不能用 = ,而应该用包含&

if (characteristic.properties & CBCharacteristicPropertyWrite) {
// 核心代码在这里
[peripheral writeValue:data // 写入的数据
     forCharacteristic:characteristic // 写给哪个特征
                  type:CBCharacteristicWriteWithResponse];// 通过此响应记录是否成功写入
}

你可能感兴趣的:(18-蓝牙)