n
iOS
中提供了
4
个框架用于实现蓝牙连接
p
GameKit
.
framework
(
用法简单
)
ü
只能用于
iOS
设备之间的连接
,多用于游戏(比如五子棋对战),
从
iOS7
开始过期
p
MultipeerConnectivity
.
framework
ü
只能用于
iOS
设备之间的连接
,
从
iOS7
开始引入
,主要用于文件共享(仅限于沙盒的文件)
p
p
ExternalAccessory
.
framework
ü
可用于第三方蓝牙设备交互
,但是蓝牙设备必须经过
苹果
MFi
认证
(国内较少)
p
p
CoreBluetooth
.
framework
(
时下热门
)
ü
可用于第三方蓝牙设备交互
,必须要支持蓝牙
4.0
²
硬件至少是
4s
,系统至少是
iOS6
²
蓝
牙
4.0
以低功耗著称,一般也叫
BLE
(
Bluetooth
Low
Energy
)
ü目前应用比较多的案例:运动手坏、嵌入式设备、智能家居
日前新增一种专门处理智能家居的框架:HomeKit,是苹果2014年发布的智能家居平台。
2015年5月15日,苹果宣布,首批支持其HomeKit平台的智能家居设备在6月上市
n
显示可以连接的蓝牙设备列表
GKPeerPickerController *ppc = [[GKPeerPickerController alloc] init];
ppc.delegate = self;
[ppc show];
n
在代理方法中监控蓝牙的连接
- (void)peerPickerController:(GKPeerPickerController*)picker didConnectPeer:(NSString *)peerID toSession:(GKSession*)session{
NSLog(@"连接到设备:%@", peerID);
//关闭蓝牙设备显示界面
[picker dismiss];
//设置接收到蓝牙数据后的监听器
[session setDataReceiveHandler:self withContext:nil];
//保存session
self.session =session;
}
n
处理接收到的蓝牙数据
- (void) receiveData:(NSData*)data fromPeer:(NSString*)peer inSession: (GKSession*)session context:(void*)context{
}
n
利用
GKSession
给其他设备发送数据
p
给指定的连接设备发送数据
- (BOOL)sendData:(NSData *)data toPeers:(NSArray*)peers withDataMode:(GKSendDataMode)modeerror:(NSError**)error;
p
给所有连接的设备发送数据
- (BOOL)sendDataToAllPeers:(NSData *)data withDataMode:(GKSendDataMode)modeerror:(NSError**)error;
GameKit
的蓝牙开发注意
n
只能用于
iOS
设备之间的连接
n
n
只能用于同一个应用程序之间的连接
n
n
最好别利用蓝牙发送比较大的数据
Core Bluetooth
n
Core Bluetooth
测试比较麻烦,正常情况下,得至少有
2
台真实的蓝牙
4.0
设备
n
n
如何让
iOS
模拟器也能测试蓝牙
4.0
程序?
p
买一个
CSR
蓝牙
4.0 USB
适配器,插在
Mac
上
p
在终端输入
sudo
nvram
bluetoothHostControllerSwitchBehavior
="never"
p
重启
Mac
p
用
Xcode
4.6
调试代码,将程序跑在
iOS
6.1
的模拟器上
(苹果把iOS 7.0模拟器对BLE的支持移除掉了)
n
Core Bluetooth
的使用场景
运动手环、智能家居、嵌入式设备等等
(
金融刷卡器、心电测量器
)
Core Bluetooth的基本常识
n
每个蓝牙
4.0
设备都是通过服务(
Service
)和特征(
Characteristic
)来展示自己的
p
一个设备必然包含一个或多个服务,每个服务下面又包含若干个特征
p
n
特征是与外界交互的最小单位
ü
比如说,一台蓝牙
4.0
设备,用特征
A
来描述自己的出厂信息,用特征
B
来收发数据
p
n
服务和特征都是用
UUID
来唯一标识的,通过
UUID
就能区别不同的服务和特征
n
n
设备里面各个服务
(service)
和特征
(characteristic)
的功能,均由蓝牙设备硬件厂商提供,比如哪些是用来交互
(
读写
)
,哪些可获取模块信息
(
只读
)
等
Core
Bluetooth
的开发步骤
n
建立中心
设备
n
n
扫描外设(
D
iscover
Peripheral
)
n
n
连接外设
(
C
onnect
Peripheral
)
n
扫描外设中的服务和特征
(
D
iscover
Services
And
Characteristics
)
n
n
利用特征
与外设做数据交互
(
E
xplore
A
nd
I
nteract)
n
断开连接
(
D
isconnect)
蓝牙的现状
n
绝大多数智能手机支持蓝牙
4.0
(
BLE
)
n
n
蓝牙芯片发展迅速,在性能和效率方面都有很大提高,且不断变得更小更便宜
n
iBeacon
+
蓝牙,前景一片光明
p
应用之一:室内导航
p
Estimote
公司为
iBeacon
提供基站
p
3
个
iBeacon
基站的预购价格为
99
美元(约合人民币
610
元)
p
Estimote
公司推出的
iBeacon
基站的最远传输距离为
50m
,但是他们推荐在
10m
范围内的使用效果最好
n
一块纽扣电池就能为
一个
iBeacon
基站
提供长达
2
年的使用寿命,而且是在设备不断对外发射信号的情况下