iOS蓝牙开发总结

最近做了一个手环项目,总结一下记录下来。
首先推荐一篇蓝牙基础文章——一小时蓝牙科普 文字整理版
然后再推荐一个非常容易使用的蓝牙库——BabyBluetooth

1.来电提醒

效果:当iPhone被呼叫时,手环会震动提示,并且显示来电信息(包括联系人和手机号)。
实现:看起来功能比较复杂没有什么思路,但是对于iOS端来说还是比较简单的。这个功能并不是仅靠iOS端来实现的,需要手环支持ANCS协议。iOS端需要做的就是与手环进行配对。配对成功后,系统会以广播的形式将来电、信息、通知等消息发送给手环,手环根据信息作出应答。
注意:配对后的手环会自动与iPhone设备连接,无论App是否打开。此时的连接是系统级别的,无法用代码断开连接。
ANCS(Apple Notification Center Service)中文翻译为:苹果通知中心服务

2.配对外设的连接

所有外设,只有在发出广播包的情况下,才能被iPhone设备发现,绝大多数情况下,外设被连接后就不会再继续发出广播(也有例外)。
一般的手环连接流程是:

1.打开App和蓝牙
2.搜索蓝牙外设
3.对比mac地址
4.连接蓝牙外设
5.读取外设存储的数据

(一般为了保证连接的手环与上次一致,会在本地保存上次连接手环的mac地址,在连接手环之前会对比mac地址是否一致。)

已配对的手环在走这个流程的时候会发生一个问题,就是打开蓝牙的时候自动连接iPhone设备,然后搜索蓝牙设备的时候搜不到,流程走不下去。此时要用系统的一个方法获取已连接的设备。

- (NSArray *)retrieveConnectedPeripheralsWithServices:(NSArray *)serviceUUIDs NS_AVAILABLE(10_9, 7_0);
已经连接的外设列表

打印一下数组,可以看到外设对象中不包含mac地址信息,这个时候不能通过对比mac地址来判断是否为上次连接的手环了。name和state都会重复,非identifier莫属。
所以配对外设的连接流程是:

1.打开App和蓝牙
2.查找已连接外设
3.对比identifier
4.保存外设对象
5.读取外设存储的数据

你可能感兴趣的:(iOS蓝牙开发总结)