IOS开发之——蓝牙通信浅谈
故事背景:
为什么要研究IOS的蓝牙呢?
答:当然是工作需要啦,公司有个项目是做心电测量的,主要就是通过手持嵌入式设备测量心电,通过蓝牙将数据传送到手机(安卓,IOS),然后手机端解析数据包并绘制曲线,最后上传到服务器保存。目前已经完成了安卓设备的APP开发工作,支持大多数的主流安卓设备(主要安卓各厂商的蓝牙不同,完全兼容希望不大),然后Boss就打算继续开发IOS的版本了,遂让我这个做QT的小白从头搞起IOS。
做IOS的蓝牙开发需要哪些准备工作?
答:用了一上午的时间看了各种大神的解答,受益匪浅,打算选择一种较好的方案实现我的IOS蓝牙之旅,上网各种找啊,把CocoaChina和Code4App翻了个底朝天,大多数都是坏消息,为什么呢,客官听我娓娓道来。
你对IOS蓝牙了解多少?
答:首先IOS设备本身的蓝牙并不是用来给你传输文件的,这点你要深切的理解,苹果之所以给他们装上蓝牙不过是让你练练蓝牙耳机啊,蓝牙音箱之类的,因为非越狱苹果上面听歌不都是要花钱的么,如果你用蓝牙把歌曲传给别人,那不是侵权了么(当然,在TC没有侵权一说),所以啊,苹果在硬件上面就把你传输文件给限制了。
而且苹果在蓝牙4.0之前还有个特别变态的,就是只有IOS设备和苹果认证的MFI设备才可以被IOS设备检索到,所以啊,什么安卓蓝牙啊,自己做的蓝牙啊,想连上苹果,告诉你,木有可能!!!
但是,在蓝牙4.0出来之后(注意,硬件上要4s以上,系统要ios6以上才能支持4.0),苹果开放了BLE通道,真是屌丝的福音啊,我们这些没有MFI认证的蓝牙设备终于可以连接非越狱的苹果了,所以也可以开发蓝牙应用咯。但是啊,这得是蓝牙4.0才有的,也就是说爱疯4也不支持哦,所以完全兼容还是没可能。
注:上面说的都是针对非越狱的IOS设备的,越狱的当然有更好的办法了,办法下面细说。
首先,你要了解你的目的是什么,一般的IOS蓝牙开发有以下三种目的:
1. IOS设备和IOS设备之间交互
好消息是:ios6.0可以把iPhone手机当从设备了,可以两台iPhone通过蓝牙通信传数据了,有点类似spp协议
坏消息是:我们需要的不是这种模式
这种模式通常用于两个使用IOS设备的土豪之间互相切磋游戏,玩个飞车什么的,需要注意的是
2. IOS设备与MFI认证设备交互
什么是MFI认证呢?意思是(Make For ipod/ipad/iphone),只有少数的硬件厂商才有苹果的MFI认证,如果你看到这,你的蓝牙设备还没设计,而且想发布在AppStore上,而且打算使用蓝牙4.0以下(4.0就不需要MFI了,福音),那你还是找个MFI认证的硬件开始做吧,我们公司已经有产品了,不可能重新设计,方案Pass了。
好消息是:如果你的蓝牙模块还没设计,打算在AppStore上发布,打算使用蓝牙4.0以下(IOS设备都兼容),那你就抓紧找MFI认证的蓝牙模块吧
坏消息是:我们不可能重新设计,所以舍弃
3. IOS设备与非IOS设备交互
这就是我们的现状了,根据这个现状,我们能分析出两种情况:
a. 我想做蓝牙4.0以下的,这样iphone4也能用了
好消息:确实可以兼容iphone4,但是由于苹果封闭,没有那个API给你调,苹果上也根本检索不到非IOS设备,所以你就需要越狱了,调用私有Api连接设备
坏消息:只有越狱的手机才能用,发布到AppStore是妄想
b. 我想做蓝牙4.0的,不全兼容也没事,我想发布在AppStore上
好消息:苹果开放了4.0的BLE通道,你可以用BLE通道通信,而且4.0设备也能检索到
坏消息:对IOS版本和IOS设备双重要求,肯定不能全兼容了
所以,根据你自己的实际情况,选择方案,现总结出以下几种方案:
1. 情景:蓝牙2.0,发布在AppStore上
答:使用MFI认证的蓝牙模块设计你的蓝牙产品
特点:不越狱就能用,IOS设备全兼容
2. 情景:蓝牙2.0,不用MFI
答:不能用苹果的Api了,使用私有Api连接设备
特点:只能越狱的手机才能用了,IOS设备全兼容
3. 情景:蓝牙4.0
答:使用BLE通道
特点:IOS设备不完全兼容,无需越狱,无需使用MFI,可发布在AppStore上
注意:一定要看你的蓝牙版本,这样才能选择方案,我们现在设备的版本是2.0,但是Boss想要发布在AppStore上,所以打算升级成4.0的,只有这么办了
最后附上参考资料:
适合情景2:http://www.cocoachina.com/iphonedev/sdk/2011/1025/3417.html
开发过程注意:http://see.sl088.com/wiki/%E8%93%9D%E7%89%994.0_For_IOS#cite_note-7