最近要做关于iOS上的蓝牙开发项目,为此阅读了苹果的官方文档,这里做一些翻译和摘录和大家共享交流。(如需转载请注明出处)
关于Core BlueTooth
Core BlueTooth是一个iOS的开发框架,其中包含了若干类,能够和低功耗蓝牙(符合蓝牙4.0规范)设备进行通信。例如,你的iPhone或者MacBook能够发现、寻找诸如心率仪、电子温度计等设备并与之交互。你的iPhone和MacBook还能作为外围设备,向其他主设备提供信息。作为一个开发者,你不必为底层如何实现伤脑筋,因为苹果都帮你实现好了,你只管用便是。
Central(中心设备)和Peripheral(外围设备)
Central和Peripheral是蓝牙应用中两个主要的角色。Peripheral一般拥有其他设备所需要的数据,而Central则会使用Peripheral提供的这些信息来完成一些任务,有点类似计算机网络通信中的C/S结构。例如,心率仪作为一个Peripheral可以向iOS应用提供温度,iOS应用进而通过友好的方式将该数据显示给用户。
根据角色划分不同,Central和Peripheral所做的事也有所区别。Peripheral通过广播数据来向全世界宣布自己的存在,而Central则通过扫描来发现自己感兴趣的Peripheral。一旦Cenral发现自己感兴趣的Peripheral,便会发出连接请求,之后便会和该Peripheral进行交互,而Peripheral则会通过合适的方式来响应请求。
iOS应用的状态对BlueTooth任务产生的影响
当你的iOS应用处于后台或者挂起状态时,会对BlueTooth任务产生影响。默认情况下,BlueTooth是不会在应用处于后台或挂起时执行的,除非你特别制定Central和Peripheral可以在后台或者挂起时继续运行。即便如此,BlueTooth任务的运行还是与前台运行时略有区别,这些差异在设计应用时都应当考虑进去。
即使是支持后台运行的应用也会因为种种原因被释放内存,这时你可以通过保存Central和Peripheral的状态并在应用再次启动时恢复,以此来支持长耗时的蓝牙任务。
(未完待续)