科技中心

iphone发布2.2.1 OS升级,抓了两只臭虫

28 7月 , 2019  

终于2.2.1在所有iphone用户的热盼中来了,可惜复制粘贴依然没有,也没出现苹果发布iphone2.0
OS时就说要搞的即时消息push
notification(之前盛传要在2.2.1里内置的)。官方给出的改进只是,Safari稳定性改进和电子邮件保存图片后可能不出现在相册内的除虫。

在公司待的一年多时间里,做了几个蓝牙、Wi-Fi通讯的项目,碍于时间关系一直没有做整理工作,现在稍微闲下来,就顺便整理一下。iOS蓝牙3.0需要获得苹果MFI认证,因此项目初期和嵌入式工程师沟通iOS蓝牙只做4.0BLE,和嵌入式工程师做好沟通后,就开始进入BLE的iOS开发阶段。蓝牙、Wi-Fi项目中,实现连接、通讯很简单,项目大部分的时间是和嵌入式工程师联调通讯部分,最让人头痛的是iOS开发工程师没做过蓝牙项目同时嵌入式工程师也没做过蓝牙项目出了问题的时候不清楚到底是嵌入式工程师AT指令不对呢,还是iOS开发工程师自己的代码有问题,也花费大量时间发现、处理iphone与蓝牙模块中的异常情况,做出逻辑改进,优化用户体验。我们的项目中,iphone与蓝牙模块基于Modbus协议通讯,这以后笔者会慢慢写。本文是通过iphone手机控制外设,不涉及iphone手机之间的蓝牙连接交互,也不涉及其他设备控制iphone手机。

必赢娱乐棋牌,友情提示:需要越狱的升级前三思而行。虽然2.2.1让人小失望,不过坊间关于2.3的流传倒挺让人兴奋的—–2.3将提供蓝牙同步itunes的功能,这是否意味着iphone蓝牙终将彻底解放?——消息来源预测准了2.2.1只是用来抓臭虫的。

第一步:建立连接

1.基于系统库<CoreBluetooth/CoreBluetooth.h>进行开发,因此导入头文件#import
<CoreBluetooth/CoreBluetooth.h>;

遵循代理<CBCentralManagerDelegate,CBPeripheralDelegate>

2.创建CBCentralManager实例

必赢娱乐棋牌 1

3.当创建完CBCentralManager实例后,会收到CBCentralManagerDelegate回调,执行以下代理方法(可自行把苹果弃用的方法枚举改为新的枚举,笔者较懒没改,但能用);

必赢娱乐棋牌 2CBCentralManagerStatePoweredOff的时候可添加方法通知到你当前的控制器,让它提示用户到系统->设置->蓝牙里打开蓝牙连接;CBCentralManagerStatePoweredOn的时候可添加方法通知你当前的控制器,告诉它蓝牙可用,让用户继续后面的操作。

4.当蓝牙走到CBCentralManagerStatePoweredOn的时候,此时添加方法去告诉控制器蓝牙是可用的,此时用户可进行scan扫描周边蓝牙设备的操作,scanForPeripheralsWithServices中,传入nil表示对搜索周边所有的蓝牙设备,当然你也可以通过UUID寻找特定的蓝牙设备;

必赢娱乐棋牌 3

5.当CBCentralManager开始做scan这个搜索动作后,会触发CBCentralManagerDelegate的回调;此处有三坑,第一坑:蓝牙模块很久都搜不出来。针对这个坑,需要找到嵌入式工程师,让嵌入式工程师去调整蓝牙模块广播的频率,笔者的项目中,当嵌入式工程师调整完此频率后,就很容易把蓝牙模块搜索出来了;第二坑:比如我有一个蓝牙模块,两台名字不同的机器,第一台机器叫A,第二台机器叫B,当蓝牙模块插进A的时候,此时我们搜出的名字应该叫A,当蓝牙模块插进B的时候,此时我们搜出的名字应该叫B,如果此时间用peripheral.name,我们把原本插在A的蓝牙拔出,然后插进B,会发现peripheral.name还没变过来依然叫A,但嵌入式工程师广播的name,NSString*
name = [advertisementData
objectForKey:CBAdvertisementDataLocalNameKey];确实已经变成B了,笔者原来一直用peripheral.name,然后一直跟嵌入式工程师纠缠说他没改过来,但其实他确实已经改过来了;第三坑:iOS与安卓不同,安卓能轻松拿到蓝牙设备的mac地址,但iOS拿不到,这里嵌入式工程师和产品又会跟你说你最讨厌的一句话“安卓可以”,然后问题又推到iOS开发者身上了,笔者是不能够通过iphone直接拿到mac地址,要获取mac地址只能叫嵌入式工程师把mac地址写在广播里的advertisementData中,key是kCBAdvDataManufacturerData,要写到这个key的value里,关于kCBAdvDataManufacturerData,请自行百度搜索;RSSI为距离值;

必赢娱乐棋牌 4至此,已经完成搜索

6.搜索出你的蓝牙模块后,开始下一个动作,用iphone去连接蓝牙模块;


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图