gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:34:57 25 4
gpt4 key购买 nike

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

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

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

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

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

Wifi menu with available iPhone hotspot

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

我花了很多天在互联网上(谷歌,Stackoverflow,...)寻找类似的案例。我阅读了很多文章并尝试了很多事情,例如停止扫描并在 10 秒后连接不成功时重新开始扫描。

如果我的问题不清楚,请随时告诉我。如果需要,我会更新它。

非常感谢您的帮助。
我真的需要找到一种方法来解决这个问题。

最佳答案

我没有答案(也没有足够的代表发表评论),但几个月来我一直遇到一个非常相似的问题。我扮演核心角色的 iOS 应用程序有时无法发现外围设备 (linux) 上的服务,这只能通过设置/蓝牙重启我的 iOS 设备上的蓝牙 radio 来修复。弹起蓝牙 radio 后,外围设备发现似乎完美无缺。

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

似乎 iOS 在发现新外围设备时正在缓存 BTLE 外围设备服务和特性,而刷新此缓存的唯一方法是重启蓝牙 radio 。

关于ios - 为什么有时我需要重新启动 iOS 蓝牙(使用系统按钮)才能使我的中央管理器能够成功连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com