美文网首页iOS蓝牙开发互联网科技Android开发经验谈
IOS蓝牙开发遇到问题?不慌,看看本文收集的问题能否为你提供解决

IOS蓝牙开发遇到问题?不慌,看看本文收集的问题能否为你提供解决

作者: ff75cdf4bdf3 | 来源:发表于2017-11-09 15:48 被阅读56次

    在上一篇《Android BLE开发常见问题及解决方法》文章中我相信帮助了很多的小伙伴,那么在这篇《iOS BLE开发常见问题及解决方法》文章希望还能帮助到你!

    1、安装导入问题及解决方法

    1.1安装了pods的xcode导入蓝牙库运行报错

    按照下面的步骤查看,TARGETS->Build Phases->Compile Sources,看是否导入了DeviceInfo.m文件,如果导入了DeviceInfo.m文件,删除后再运行即可。

    2、扫描设备问题

    2.1如何获取设备的MAC地址?

            如今的iOS系统已经没有允许开发者获取设备MAC地址的权限了,如果在开发过程中,需要用到设备的MAC地址信息,可以通过底层修改广播数据,将设备的MAC地址存放在广播数据中的厂商数据里面,这样,我们在扫描的时候,就可以通过解析广播数据来获取设备的MAC地址信息;

    2.2扫描不到设备?

            检查是否在viewDidLoad方法里面马上调用了扫描方法,如果是,修改成在viewWillApper方法里面延时1s左右后开始扫描。

    3、数据收发的问题

    3.1无法修改模块名称的问题

    情况1:修改名称不成功

    检查使用的是哪个版本的API文件,V2.9以前的版本(包括V2.9)存在无法修改名称的问题,这个问题已经在V3.0(包括V3.0)后的版本中得到修复;

    情况2:无法将名称修改为中文

            在V3.0中,模块的名称是无法改为中文的,因为在这个版本中,字符编码是ASCII码,而中文不存在ASCII码,所以在修改的时候会失败,这个bug在3.1及后续的版本中会得到修复,那V3.0版本就要手动将字符编码转换为UTF-8编码,这样就能解决要修改的名称即包含中文也包含英文的情况。

            注意:修改模块名称之后,需要重启iPhone的蓝牙并连接设备,然后断开,再重新扫描,设备的名称就刷新过来了。

    3.2数据发送不成功的问题

            首先确认模块收发数据是否是加密的模式,确认完毕后,根据模块收发数据的类型设置isEncryption属性的值,默认该属性为YES,当属性值为YES时, API会以加密的方式发送数据,为NO时,会以不加密的方式发送数据。

    3.3 APP端收不到模块发送的数据

    情况1:确认加密方式

            确认模块发送数据的方式是加密还是非加密,然后根据问题2中的方式设置isEncryption属性;

    情况2:确认对应通道的notify是否打开

            可以在-(void)bleManagerPeripheral:(CBPeripheral*)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error这个回调方法里面确定通道notify是否打开(注:该回调方法在V3.0及以上版本中才能使用)。

    3.4 APP接收的数据参差不齐

            开发中可能模块会持续向APP发送多笔数据,而每发送两笔数据,之间的间隔又比较短(一般小于等于30ms),且每笔数据不满20字节(模块数据加密的话不满17字节),这时候APP接收的数据可能是被拆分并重新组装后的数据,比如非加密模块,每次发送17字节,快速发送5次,APP第一次可能会收到20字节,而多出来的3字节是模块端第二次发送的前3字节,后面的数据也可能被类似这样拆分,APP接收数据的次数便小于5,而APP接收的数据整体顺序是没问题的,这种情况要避免数据被拆分,要么模块增大发送间隔,要么模块每次发送的数据补足20字(数据加密的话补足17字节)。

    3.5如何在不使用我司蓝牙库对数据加解密

            如果客户在开发过程中,直接使用的是系统的框架,而模块数据是加密的,这时就需要APP端在发送数据时进行加密,在接收数据时进行解密,在这种情况下,可以单独使用我们的加密库TTC_Ble_Encryption_lib。具体如下

            加密使用方法:+ (NSData*)decryption:(NSData *)data.

            解密使用方法:+ (NSData*)encryption:(NSString *)string.

    相关文章

      网友评论

        本文标题:IOS蓝牙开发遇到问题?不慌,看看本文收集的问题能否为你提供解决

        本文链接:https://www.haomeiwen.com/subject/voxmmxtx.html