一种iOS应用精确定位蓝牙配对故障的方法及通信装置与流程

文档序号:16279038发布日期:2018-12-14 22:46阅读:203来源:国知局
一种iOS应用精确定位蓝牙配对故障的方法及通信装置与流程

本发明涉及通信领域,尤其涉及一种ios应用精确定位蓝牙配对故障的方法及通信装置。

背景技术

蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换;为了保证蓝牙通信的安全性和方便性,蓝牙标准规定可以以配对的形式完成蓝牙设备和待连接设备之间的首次通讯认证,即蓝牙配对过程。在蓝牙配对过程中,蓝牙配对通常表现为蓝牙设备向待连接设备发起配对请求,等待用户输入pin码并判断用户输入的pin码是否正确或者用户在待连接设备上对配对请求进行确认来完成配对过程,进而进行后续正常通信。

但是在ios系统的通信装置的开发过程中,由于ios系统不开源,蓝牙4.0的开发只能使用ios系统提供的蓝牙框架。在使用蓝牙框架与待连接设备(例如,蓝牙鼠标、蓝牙智能密钥设备等)交互,则所有蓝牙设备的配对操作都是由ios系统底层封装实现,上层应用不能获知ios系统与蓝牙设备的配对状态而盲目地发送数据会与ios系统弹出的配对框相冲突导致待连接设备无法使用;即使蓝牙设备已经与ios系统断开连接,也不知道是否已经断开连接及也不能区分断开连接的原因。



技术实现要素:

本发明的目的是为了克服现有技术的不足,提供一种ios应用精确定位蓝牙配对故障的方法及通信装置。

本发明提供了一种ios应用精确定位蓝牙配对故障的方法,包括以下步骤:

步骤s0:通信装置等待被上层应用调用,当所述通信装置被所述上层应用调用时,执行步骤s1;

步骤s1:所述通信装置记录当前时间为第一时间;调用ios系统第一接口,根据ios系统的返回信息判断是否配对成功,是则所述向上层应用返回配对成功信息;否则执行步骤s2;

步骤s2:所述通信装置根据ios系统的返回信息判断配对失败类型,如所述配对失败类型是用户取消操作,则向所述上层应用返回用户取消操作信息;如所述配对失败类型是第二失败类型错误,则执行步骤s3;

步骤s3:所述通信装置记录当前时间为第二时间,判断所述第二时间与所述第一时间的差值是否大于预设时长,是则向所述上层应用返回超时错误信息;否则向所述上层应用返回长密钥错误信息。

本发明又提供了一种通信装置,包括第一记录模块、第二调用模块、第一判断模块、第二判断模块、第二记录模块、第三判断模块、第一返回模块、第二返回模块、第三返回模块和第四返回模块;

所述第一记录模块,用于当通信装置被所述上层应用调用时,记录当前时间为第一时间;

所述第二调用模块,用于当所述通信装置被所述上层应用调用时,调用ios系统第一接口;

所述第一判断模块,用于在所述第二调用模块调用ios系统第一接口后,根据ios系统的返回信息判断是否配对成功;

所述第一返回模块,用于当所述第一判断模块判断为是时,向上层应用返回配对成功信息;

所述第二判断模块,用于当所述第一判断模块判断为否时,根据ios系统的返回信息判断配对失败类型;

所述第二返回模块,用于当所述第二判断模块判断配对失败类型是用户取消操作时,向所述上层应用返回用户取消操作信息;

所述报错模块,用于当所述第二判断模块判断为否时,报错,结束;

所述第二记录模块,用于当所述第二判断模块判断配对失败类型是第二失败类型错误时,记录当前时间为第二时间;

所述第三判断模块,用于判断所述第二记录模块记录的所述第二时间与所述第一记录模块记录的所述第一时间的差值是否大于预设时长;

所述第三返回模块,用于当所述第三判断模块判断为是时,向所述上层应用返回超时错误信息;

所述第四返回模块,用于当所述第三判断模块判断为否时,向所述上层应用返回长密钥错误信息。

本发明与现有技术相比,具有以下优点:本发明提供的一种ios应用精确定位蓝牙配对故障的方法及通信装置解决了上层应用无法从ios系统中获取蓝牙配对状态的问题,精准确定出蓝牙配对故障是由于用户取消操作引起的、还是超时引起的或者是由于长密钥错误引起的,并将确定结果返回给上层应用,以便上层应用进行正确的后续处理。

附图说明

图1为本发明实施例一提供的一种ios应用精确定位蓝牙配对故障的方法的流程图;

图2为本发明实施例二提供的一种ios应用精确定位蓝牙配对故障的方法的流程图;

图3为本发明实施例三提供的一种ios应用精确定位蓝牙配对故障的方法的流程图;

图4为本发明实施例四提供的一种通信装置的结构方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本发明实施例一提供一种ios应用精确定位蓝牙配对故障的方法,如图1所示,包括以下步骤:

步骤100:通信装置等待被上层应用调用,当通信装置被上层应用调用时,执行步骤101;

步骤101:通信装置记录当前时间为第一时间;调用ios系统第一接口,根据ios系统的返回信息判断是否配对成功,是则向上层应用返回配对成功信息;否则执行步骤102;

可选地,本实施例中,步骤101具体为:通信装置记录当前时间为第一时间;调用ios系统读取蓝牙特征数据接口,判断ios系统的返回信息是否为第一预设数据,是则向上层应用返回配对成功信息;否则向上层应用返回断开连接信息,执行步骤102;

进一步地,本实施例中,步骤101具体为:通信装置记录当前时间为第一时间;调用ios系统读取蓝牙特征数据接口,根据ios系统的返回信息所调用的函数的类型判断是否配对成功,如ios系统调用接收数据回调函数返回信息,则向上层应用返回配对成功信息;如ios系统调用断开连接回调函数返回断开连接信息,则向上层应用返回断开连接信息,执行步骤102。

可选地,本实施例中,步骤101具体为:通信装置记录当前时间为第一时间;从上层应用获取预设指令;调用ios系统发送预设指令接口;打开监听通道,监听ios系统的返回信息,判断返回信息是否为断开连接信息,否则判断返回信息中是否包含第二预设数据,当返回信息中包含第二预设数据时,则拦截返回信息中包含的第二数据,向上层应用返回配对成功信息,等待接收ios系统返回的预设指令响应,当接收ios系统返回的预设指令响应时,向上层应用返回预设指令响应;当返回信息中未包含第二预设数据时,向上层应用返回配对失败信息;是则向上层应用返回断开连接信息,执行步骤102。

更进一步地,本实施例中,判断返回信息中是否包含第二预设数据,具体为:通信装置判断返回信息中包含的第二数据与第二预设数据是否相同,是则拦截返回信息中包含的第二数据,否则向上层应用返回配对失败信息。

更进一步地,本实施例中,步骤101具体为:通信装置记录当前时间为第一时间;从上层应用获取预设指令;调用ios系统发送预设指令接口;打开监听通道,监听ios系统的返回信息,判断调用ios系统函数的类型,如调用ios系统接收数据回调函数接收的返回信息,则判断返回信息中是否包含第二预设数据,当返回信息中包含第二预设数据时,拦截返回信息中包含的第二预设数据,向上层应用返回配对成功信息,等待接收ios系统返回的预设指令响应,当接收ios系统返回的预设指令响应时,向上层应用返回预设指令响应;当返回信息中未包含第二预设数据时,向上层应用返回配对失败信息;如接收到ios系统调用断开连接回调函数返回的返回信息为断开连接信息,则执行步骤102。

更进一步地,本实施例中,步骤101中,打开监听通道,具体为:通信装置调用ios系统打开接收数据监听接口,接收ios系统打开接收数据监听回调函数返回的监听通道打开成功信息。

更进一步地,本实施例中,步骤101中,等待接收ios系统返回的预设指令响应,具体为:通信装置接收ios系统接收数据回调函数返回的预设指令响应。

步骤102:通信装置根据ios系统的返回信息判断配对失败类型,如配对失败类型是用户取消操作,则向上层应用返回用户取消操作信息;如配对失败类型是第二失败类型错误,则执行步骤103;否则报错,结束;

可选地,本实施例中,步骤102具体为:通信装置判断ios系统的返回信息中的错误码类型,如错误码为第一预设值,则向上层应用返回用户取消操作信息;如错误码为第二预设值,则执行步骤103;

更进一步地,本实施例中,步骤102具体为:通信装置判断ios系统断开连接回调函数返回的错误码类型,如错误码为第一预设值,则向上层应用返回用户取消操作信息;如错误码为第二预设值,则执行步骤103。

步骤103:通信装置记录当前时间为第二时间,判断第二时间与第一时间的差值是否大于预设时长,是则向上层应用返回超时错误信息;否则向上层应用返回长密钥错误信息。

本实施例提供了一种ios应用精确定位蓝牙配对故障的方法;解决了上层应用无法从ios系统中获取蓝牙配对状态的问题,精准确定出蓝牙配对故障是由于用户取消操作引起的、还是超时引起的或者是由于长密钥错误引起的,并将确定结果返回给上层应用,以便上层应用进行正确的后续处理。

实施例二

本发明实施例二提供一种ios应用精确定位蓝牙配对故障的方法,如图2所示,包括以下步骤:

步骤200:通信装置等待被上层应用调用,当通信装置被上层应用调用时,执行步骤201;

步骤201:通信装置调用ios系统蓝牙连接接口;

可选地,本实施例中,步骤201之后还包括:当ios系统蓝牙连接接口被通信装置调用时,ios系统向蓝牙设备发送连接请求;

例如,本实施例中,ios系统蓝牙连接接口为-(void)connectperipheral:(cbperipheral*)peripheraloptions:(nullablensdictionary<nsstring*,id>*)options。

步骤202:当通信装置接收到ios系统返回的成功连接信息时,通信装置调用ios系统扫描蓝牙服务接口,等待接收ios系统扫描服务回调函数返回的蓝牙服务;

可选地,本实施例中,步骤202中,通信装置接收到ios系统返回的成功连接信息,具体为:通信装置接收ios系统连接回调函数返回的成功连接信息;

例如,本实施例中,ios系统连接回调函数为:-(void)centralmanager:(cbcentralmanager*)centraldidconnectperipheral:(cbperipheral*)aperipheral。

可选地,本实施例中,步骤202之后还包括:当ios系统扫描蓝牙服务接口被调用时,ios系统扫描蓝牙服务。

例如,本实施例中,ios系统扫描蓝牙服务接口为-(void)discoverservices:(nullablensarray<cbuuid*>*)serviceuuids。

例如,本实施例中,ios系统扫描服务回调函数为-(void)peripheral:(cbperipheral*)aperipheraldiddiscoverservices:(nserror*)error。

步骤203:通信装置调用ios系统扫描蓝牙特征接口,接收ios系统扫描蓝牙特征回调函数返回的蓝牙特征;

可选地,本实施例中,通信装置调用ios系统扫描蓝牙特征接口之后,还包括:ios系统扫描蓝牙特征。

例如,本实施例中,扫描蓝牙特征接口为:-(void)discovercharacteristics:(nullablensarray<cbuuid*>*)characteristicuuidsforservice:(cbservice*)service。

例如,本实施例中,ios系统扫描蓝牙特征回调函数具体为:-(void)peripheral:(cbperipheral*)aperipheraldiddiscovercharacteristicsforservice:(cbservice*)serviceerror:(nserror*)error。

可选地,本实施例中,步骤203之后还包括:通信装置从接收到的蓝牙特征中检索包括读属性的蓝牙特征;

具体地,通信装置从接收到的蓝牙特征中检索包括读属性的蓝牙特征,具体为:通信装置根据cbservice对象中的cbcharacteristic对象中cbcharacteristicproperties类型的属性检索包括读属性的蓝牙特征。

例如,本实施例中,当蓝牙特征中的cbcharacteristicproperties类型的属性是cbcharacteristicpropertyread时,蓝牙特征为包含读属性的蓝牙特征。

可选地,本实施例中,包含读属性的蓝牙特征可以有1个或者为多个;包含读属性的蓝牙特征为多个,则步骤204之前,还包括:通信装置默认选择检索到的第一个包含读属性的蓝牙特征执行后续操作;或者通信装置随机选择一个包含读属性的蓝牙特征执行后续操作;

步骤204:通信装置记录当前时间为第一时间;调用ios系统读取蓝牙特征数据接口,等待接收ios系统的返回信息,如返回信息为第一预设数据,则执行步骤205;如返回信息为断开连接信息,则执行步骤206;

可选地,本实施例中,通信装置调用ios系统读取蓝牙特征数据接口,等待接收ios系统的返回信息,如返回信息为第一预设数据,则则执行步骤205;如返回信息为断开连接信息,则则执行步骤206,具体为:

通信装置调用ios系统读取蓝牙特征数据接口,等待接收ios系统的返回信息,如返回信息为ios系统调用接收数据回调函数返回的第一预设数据,则执行步骤205;如返回信息为ios系统调用断开连接回调函数返回的断开连接信息,则执行步骤206。

可选地,本实施例中,第一预设数据可以为任意数据;例如,本实施例中,第一预设数据为:a00a;

例如,本实施例中,ios系统读取蓝牙特征数据接口为-(void)readvalueforcharacteristic:(cbcharacteristic*)characteristic;

例如,本实施例中,接收数据回调函数为-(void)peripheral:(cbperipheral*)peripheraldidupdatevalueforcharacteristic:(cbcharacteristic*)characteristicerror:(nullablenserror*)erro;

例如,本实施例中,调用断开连接回调函数为-(void)centralmanager:(cbcentralmanager*)centraldiddisconnectperipheral:(cbperipheral*)peripheralerror:(nullablenserror*)error。

可选地,本实施例中,记录当前时间为第一时间,具体为:通信装置新建计时器;相应地,步骤208中,通信装置记录当前时间为第二时间,判断第二时间与第一时间的差值是否大于预设时长,具体为:通信装置记录当前时间为第二时间,判断第二时间是否大于第一预设值;通信装置新建计时器后即开始计,则初始时间为0。

可选地,本实施例中,记录当前时间为第一时间,具体为:通信装置打开原有计时器记录当前时间为第一时间;相应地,步骤208中,通信装置记录当前时间为第二时间具体为:所述通信装置打开原有计时器记录当前时间为第二时间。

步骤205:通信装置向上层应用返回配对成功信息;

例如,本实施例中,配对成功信息为:0x00000000;

步骤206:通信装置判断断开连接的原因,如原因是用户取消操作,则执行步骤207,如原因是第二失败类型错误,则执行步骤208;

可选地,本实施例中,步骤206具体为:通信装置判断错误码类型,当错误码为第一预设值时,执行步骤207,当错误码为第二预设值时,执行步骤208;

例如,本实施例中,第一预设值为:0;

第二预设值为:6;

具体地,本实施例中,ios系统与蓝牙设备配对成功后生成长密钥,并在ios系统和蓝牙设备中保存,长密钥用于加密链路;

步骤207:通信装置向上层应用返回用户取消操作信息;

例如,本实施例中,用户取消操作信息为:0x00000001;

可选地,本实施例中,通信装置向上层应用返回用户取消操作信息,具体为:通信装置调用上层应用第一回调函数向上层应用返回用户取消操作信息;

例如,本实施例中,通信装置向上层应用返回用户取消操作信息,具体为:通信装置调用上层应用第一回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回用户取消操作信息。

步骤208:通信装置记录当前时间为第二时间,判断第二时间与第一时间的差值是否大于预设时长,是则第二失败类型错误为超时错误,向上层应用返回超时错误信息,否则第二失败类型错误为长密钥错误,向上层应用返回长密钥错误信息;

例如,本实施例中,长密钥错误信息为:0x00000002;

超时错误信息为:0x00000003;

预设时长为10秒;

可选地,本实施例中,向上层应用返回长密钥错误信息,具体为:通信装置调用上层应用第二回调函数向上层应用返回长密钥错误信息;

例如,本实施例中,通信装置调用上层应用第二回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回长密钥错误信息;

可选地,本实施例中,向上层应用返回超时错误信息,具体为:通信装置调用上层应用第三回调函数向上层应用返回超时错误信息;

例如,本实施例中,向上层应用返回超时错误信息,具体为:通信装置调用上层应用第三回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回超时错误信息。

本实施例中,ios系统是指由苹果公司开发的移动操作ios系统;

本实施例提供了一种ios应用精确定位蓝牙配对故障的方法;解决了上层应用无法从ios系统中获取蓝牙配对状态的问题,精准确定出蓝牙配对故障是由于用户取消操作引起的、还是超时引起的或者是由于长密钥错误引起的,并将确定结果返回给上层应用,以便上层应用进行正确的后续处理。

实施例三

本发明实施例三提供一种ios应用精确定位蓝牙配对故障的方法,如图3所示,包括以下步骤:

步骤300:通信装置等待被上层应用调用,当通信装置被上层应用调用时,执行步骤301;

步骤301:通信装置调用ios系统蓝牙连接接口;

可选地,本实施例中,步骤301之后还包括:当ios系统蓝牙连接接口被调用通信装置时,ios系统向蓝牙设备发送连接请求;

例如,本实施例中,ios系统蓝牙连接接口为-(void)connectperipheral:(cbperipheral*)peripheraloptions:(nullablensdictionary<nsstring*,id>*)options。

步骤302:当通信装置接收到ios系统返回的成功连接信息时,通信装置调用ios系统扫描蓝牙服务接口,等待接收ios系统扫描服务回调函数返回的蓝牙服务;

可选地,本实施例中,步骤302中,通信装置接收到ios系统返回的成功连接信息具体为:通信装置接收ios系统连接回调函数返回的成功连接信息。

例如,本实施例中,ios系统连接回调函数为:-(void)centralmanager:(cbcentralmanager*)centraldidconnectperipheral:(cbperipheral*)aperipheral。

可选地,本实施例中,步骤302之后还包括:当ios系统扫描蓝牙服务接口被调用时,ios系统扫描蓝牙服务。

例如,本实施例中,ios系统扫描蓝牙服务接口为-(void)discoverservices:(nullablensarray<cbuuid*>*)serviceuuids。

例如,本实施例中,ios系统扫描服务回调函数为-(void)peripheral:(cbperipheral*)aperipheraldiddiscoverservices:(nserror*)error。

步骤303:通信装置调用ios系统扫描蓝牙特征接口,接收ios系统扫描蓝牙特征回调函数返回的蓝牙特征;

可选地,本实施例中,通信装置调用ios系统扫描蓝牙特征接口之后,还包括:ios系统扫描蓝牙特征。

例如,本实施例中,扫描蓝牙特征接口为:-(void)discovercharacteristics:(nullablensarray<cbuuid*>*)characteristicuuidsforservice:(cbservice*)service。

例如,本实施例中,ios系统扫描蓝牙特征回调函数具体为:-(void)peripheral:(cbperipheral*)aperipheraldiddiscovercharacteristicsforservice:(cbservice*)serviceerror:(nserror*)error。

可选地,本实施例中,步骤303之后还包括:通信装置接收到的蓝牙特征中检索包括读属性的蓝牙特征;

具体地,通信装置接收到的蓝牙特征中检索包括读属性的蓝牙特征,具体为:通信装置根据cbservice对象中的cbcharacteristic对象中cbcharacteristicproperties类型的属性检索包括读属性的蓝牙特征。

例如,本实施例中,当蓝牙特征中的cbcharacteristicproperties类型的属性是cbcharacteristicpropertyread时,蓝牙特征为包含读属性的蓝牙特征。

可选地,本实施例中,包含读属性的蓝牙特征可以有1个或者为多个;包含读属性的蓝牙特征为多个,则步骤304之前,还包括:通信装置默认选择检索到的第一个包含读属性的蓝牙特征执行后续操作;或者通信装置随机选择一个包含读属性的蓝牙特征执行后续操作;

步骤304:通信装置记录当前时间为第一时间;从上层应用中获取预设指令,调用ios系统发送预设指令接口,打开监听通道,监听ios系统的返回信息,如返回信息为第二数据,则执行步骤305;如返回的信息为断开连接信息,则执行步骤306;

可选地,本实施例中,通信装置打开监听通道,具体为:通信装置调用ios系统打开接收数据监听接口,接收ios系统打开接收数据监听回调函数返回的监听通道打开成功信息。

例如,本实施例中,ios系统打开接收数据监听接口为:-(void)setnotifyvalue:(bool)enabledforcharacteristic:(cbcharacteristic*)characteristic;

ios系统打开接收数据监听回调函数为:-(void)peripheral:(cbperipheral*)peripheraldidupdatenotificationstateforcharacteristic:(cbcharacteristic*)characteristicerror:(nullablenserror*)error。

可选地,本实施例中,调用ios系统发送指令接口之后,还包括:ios系统向蓝牙设备发送预设指令;

例如,ios系统发送指令接口为:-(void)writevalue:(nsdata*)dataforcharacteristic:(cbcharacteristic*)characteristictype;

可选地,本实施例中,记录当前时间为第一时间,具体为:通信装置新建计时器;相应地,步骤308中,通信装置记录当前时间为第二时间,判断第二时间与第一时间的差值是否大于预设时长,具体为:通信装置记录当前时间为第二时间,判断第二时间是否大于第一预设值;通信装置新建计时器后即开始计,则初始时间为0。

可选地,本实施例中,记录当前时间为第一时间,具体为:通信装置打开原有计时器记录当前时间为第一时间;相应地,步骤308中,通信装置记录当前时间为第二时间具体为:所述通信装置打开原有计时器记录当前时间为第二时间。

步骤305:通信装置判断接收到的第二数据与第二预设数据是否相同,是则配对成功,拦截第二数据,向上层应用返回配对成功信息并等待接收ios系统返回的预设指令响应,如接收到ios系统返回的预设指令响应,则向上层应用返回预设指令响应,否则返回步骤303;

可选地,本实施例中,等待接收ios系统返回的指令响应,具体为:通信装置调用ios系统接收数据回调函数,接收ios系统接收数据回调函数返回的指令响应;

例如,本实施例中,ios系统接收数据回调函数为-(void)peripheral:(cbperipheral*)peripheraldidupdatevalueforcharacteristic:(cbcharacteristic*)characteristicerror:(nullablenserror*)error;

例如,本实施例中,配对成功信息为:0x00000000;

第二数据为:a00a;

第二预设数据为:a00a;

可选地,本实施例之前,通信装置与蓝牙设备进行协商第二预设数据后预置第二预设数据;

步骤306:通信装置判断断开连接的原因,如原因是用户取消操作,则执行步骤307,如原因是第二失败类型错误,则执行步骤308;

可选地,本实施例中,步骤306具体为:通信装置判断ios系统断开连接回调函数返回的错误码类型,如错误码为第一预设值,则执行步骤307,如错误码为第二预设值,则执行步骤308;

可选地,本实施例中,ios系统断开连接回调函数为-(void)centralmanager:(cbcentralmanager*)centraldiddisconnectperipheral:(cbperipheral*)peripheralerror:(nullablenserror*)error;

例如,本实施例中,第一预设值为:0;

第二预设值为:6;

具体地,本实施例中,ios系统与蓝牙设备配对成功后生成长密钥,并在ios系统和蓝牙设备中保存,长密钥用于加密链路;

步骤307:通信装置向上层应用返回用户取消操作信息;

例如,本实施例中,用户取消操作信息为:0x00000001;

可选地,本实施例中,通信装置向上层应用返回用户取消操作信息,具体为:通信装置调用上层应用第一回调函数向上层应用返回用户取消操作信息;

例如,本实施例中,通信装置向上层应用返回用户取消操作信息,具体为:通信装置调用上层应用第一回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回用户取消操作信息。

步骤308:通信装置记录当前时间为第二时间,判断第二时间与第一时间的差值是否大于预设时长,是则第二失败类型错误为超时错误,向上层应用返回超时错误信息,否则第二失败类型错误为长密钥错误,向上层应用返回长密钥错误信息;

例如,本实施例中,长密钥错误信息为:0x00000002;

超时错误信息为:0x00000003;

预设时长为10秒;

可选地,本实施例中,向上层应用返回长密钥错误信息,具体为:通信装置调用上层应用第二回调函数向上层应用返回长密钥错误信息;

例如,本实施例中,通信装置调用上层应用第二回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回长密钥错误信息;

可选地,本实施例中,向上层应用返回超时错误信息,具体为:通信装置调用上层应用第三回调函数向上层应用返回超时错误信息;

例如,本实施例中,向上层应用返回超时错误信息,具体为:通信装置调用上层应用第三回调函数-(void)resultcallback:(nsinteger)errorcode向上层应用返回超时错误信息。

本实施例中,ios系统是指由苹果公司开发的移动操作ios系统;

本实施例提供了一种ios应用精确定位蓝牙配对故障的方法;解决了上层应用无法从ios系统中获取蓝牙配对状态的问题,精准确定出蓝牙配对故障是由于用户取消操作引起的、还是超时引起的或者是由于长密钥错误引起的,并将确定结果返回给上层应用,以便上层应用进行正确的后续处理。

实施例四

本发明实施例四提供一种通信装置,如图4所示,包括第一记录模块401、第一调用模块402、第一判断模块403、第一返回模块404、第二判断模块405、第二返回模块406、第二记录模块407、第三判断模块408、第三返回模块409、第四返回模块410和报错模块411;

第一记录模块401,用于当通信装置被上层应用调用时,记录当前时间为第一时间;

第一调用模块402,用于当通信装置被上层应用调用时,调用ios系统第一接口;

第一判断模块403,用于在第一调用模块402调用ios系统第一接口后,根据ios系统的返回信息判断是否配对成功;

可选地,本实施例中,第一调用模块402,具体用于当通信装置被上层应用调用时,调用ios系统读取蓝牙特征数据接口;

第一判断模块403,具体用于在第一调用模块402调用ios系统读取蓝牙特征数据接口后,判断ios系统的返回信息是否为第一预设数据;

进一步地,本实施例中,还包括第五返回模块;

第一判断模块403,具体用于根据ios系统的返回信息所调用的函数的类型判断是否配对成功;

第一返回模块404,具体用于当第一判断模块403判断ios系统调用接收数据回调函数返回信息时,向上层应用返回配对成功信息;

第五返回模块,用于当第一判断模块403判断ios系统调用断开连接回调函数返回断开连接信息时,向上层应用返回断开连接信息。

可选地,本实施例中,还包括获取模块、监听模块、拦截模块、第六返回模块、第七返回模块和第八返回模块;第一判断模块403包括第一判断单元和第二判断单元;

获取模块,用于当通信装置被上层应用调用时,从上层应用获取预设指令;

第一调用模块402,具体用于当获取模块从上层应用获取预设指令时,调用ios系统发送预设指令接口;

监听模块,用于打开监听通道,监听ios系统的返回信息;

第一判断单元,用于判断监听模块监听的返回信息是否为断开连接信息;

第六返回模块,用于当第一判断单元判断为是时,向上层应用返回断开连接信息;

第二判断单元,用于当第一判断单元判断为否时,判断返回信息中是否包含第二预设数据;

拦截模块,用于当第二判断单元判断为是时,拦截返回信息中包含的第二数据;

第七返回模块,用于当第二判断单元判断为是时,向上层应用返回配对成功信息,等待接收ios系统返回的预设指令响应,当接收ios系统返回的预设指令响应时,向上层应用返回预设指令响应;

第八返回模块,用于当第二判断单元判断为否时,向上层应用返回配对失败信息;

进一步地,本实施例中,第二判断单元,具体用于判断返回信息中包含的第二数据与第二预设数据是否相同;

进一步地,地,本实施例中,第一判断单元,具体用于判断调用ios系统函数的类型;

第二判断单元,具体用于当第一判断单元判断调用ios系统接收数据回调函数接收的返回信息时,判断返回信息中包含第二预设数据;

拦截模块,具体用于当第二判断单元判断返回信息中包含第二预设数据时,拦截返回信息中包含的第二预设数据;

第七返回模块,具体用于当第二判断单元判断返回信息中包含第二预设数据时,向上层应用返回配对成功信息,等待接收ios系统返回的预设指令响应,当接收ios系统返回的预设指令响应时,向上层应用返回预设指令响应;

第八返回模块,用于当第二判断单元判断返回信息中不包含第二预设数据时,向上层应用返回配对失败信息;

第六返回模块,具体用于当第一判断单元判断ios系统调用断开连接回调函数返回的返回信息为断开连接信息时,向上层应用返回断开连接信息;

进一步地,本实施例中,监听模块,具体用于调用ios系统打开接收数据监听接口,接收ios系统打开接收数据监听回调函数返回的监听通道打开成功信息;

进一步地,本实施例中,第七返回模块,具体用于接收ios系统接收数据回调函数返回的预设指令响应;

第一返回模块404,用于当第一判断模块403判断为是时,向上层应用返回配对成功信息;

第二判断模块405,用于当第一判断模块403判断为否时,根据ios系统的返回信息判断配对失败类型;

第二返回模块406,用于当第二判断模块405判断配对失败类型是用户取消操作时,向上层应用返回用户取消操作信息;

报错模块411,用于当第二判断模块405判断为否时,报错,结束;

第二记录模块407,用于当第二判断模块405判断配对失败类型是第二失败类型错误时,记录当前时间为第二时间;

第三判断模块408,用于判断第二记录模块407记录的第二时间与第一记录模块401记录的第一时间的差值是否大于预设时长;

第三返回模块409,用于当第三判断模块408判断为是时,向上层应用返回超时错误信息;

第四返回模块410,用于当第三判断模块408判断为否时,向上层应用返回长密钥错误信息。

可选地,本实施例中,第二判断模块405,具体用于判断ios系统的返回信息中的错误码类型;

第二返回模块406,具体用于当第二判断模块405判断ios系统的返回信息中的错误码类型为第一预设值时,向上层应用返回用户取消操作信息;

第二记录模块407,具体用于当第二判断模块405判断ios系统的返回信息中的错误码类型为第二预设值时,记录当前时间为第二时间;

进一步地,本实施例中,第二判断模块405,具体用于判断ios系统断开连接回调函数返回的错误码类型;

第二返回模块406,具体用于当第二判断模块405判断判断ios系统断开连接回调函数返回的错误码类型为第一预设值时,向上层应用返回用户取消操作信息;

第二记录模块407,具体用于当第二判断模块405判断ios系统断开连接回调函数返回的错误码类型为第二预设值时,记录当前时间为第二时间。

本实施例提供了一种通信装置;解决了上层应用无法从ios系统中获取蓝牙配对状态的问题,精准确定出蓝牙配对故障是由于用户取消操作引起的、还是超时引起的或者是由于长密钥错误引起的,并将确定结果返回给上层应用,以便上层应用进行正确的后续处理。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1