繁体   English   中英

为什么有时我需要重新启动iOS蓝牙(使用系统按钮)才能使我的中央管理器能够成功连接?

[英]Why, sometimes, do I need to restart the iOS Bluetooth (using the system button) to make my central manager able to connect successfully?

我正在iOS和OS X Yosemite上开发一个应用程序,该应用程序在iOS上使用CoreBluetooth,在Mac上使用IOBluetooth。 iOS应用程序扮演“中心”角色,而Mac应用程序扮演“外围”角色。

基本上,iOS应用(中央)开始扫描以查找外围设备,当找到Mac广告外围设备数据时,中央将连接到它并发现其服务和特征。

我的问题是,有时我不知道为什么,iOS应用程序开始扫描以查找Mac广告,当它找到它时(此步骤一直有效),它尝试连接到该广告,但从未成功。

为了使其能够再次成功连接到外围设备,我需要先关闭然后再通过iOS按钮打开蓝牙。

另一个奇怪的事情是:想象中心处于相同的情况(尝试连接失败)。 在OS X上,如果我单击系统状态栏中的“网络”图标(带有Wifi符号),则它将显示所有可用Wifi网络的列表,当它作为“个人热点”添加到我的iPhone中时,此时,中央设备(在iPhone上)设法连接到外围设备(Mac)。

带有可用iPhone热点的Wifi菜单

有了这个问题,由于iPhone随机将无法连接到Mac,因此应用程序的使用受到很大影响。

我花了很多天在互联网(Google,Stackoverflow等)上找到类似的案例。 我阅读了很多文章,并尝试了很多操作,例如停止扫描并在10秒钟后如果连接未成功就重新启动扫描。

如果我的问题不清楚,请不要犹豫告诉我。 如果需要,我将对其进行更新。

在此先感谢您的帮助。 我真的需要找到一种方法来解决此问题。

我没有答案(也没有足够的代表发表评论),但是几个月来我一直遇到一个非常相似的问题。 扮演中心角色的我的iOS应用有时有时无法发现外围设备(linux)上的服务,而这些服务只能通过重新启动我的iOS设备上的蓝牙无线电通过设置/蓝牙来修复。 弹起蓝牙无线电后,外设发现似乎运行良好。

我发现了两种可重现的情况:(1)如果在我的外围设备上我完全交换了要宣传的服务(即更改服务UUID和所有特征),则iOS外围设备将在扫描期间检测到具有此新服务的外围设备,但是服务发现失败。 我发现外围设备:didDiscoverServices被调用,但是此外围设备的服务列表为空。 (2)如果在我的外围设备上,我以任何方式修改了特性列表(添加一个新特性,然后删除一个特性),iOS应用程序根本不会注意到此更改。 在特征发现期间,将显示相同的特征列表(在修改之前)。 同样,重启iOS设备上的蓝牙无线电似乎是解决此问题的唯一方法。

在发现新的外围设备后,iOS似乎正在缓存BTLE外围设备服务和特征,并且刷新此缓存的唯一方法是重启蓝牙无线电。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM