问题标签 [cbcentralmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
601 浏览

ios - ios缓存BLE服务和特性的条件是什么?

我已经读到,当我断开连接然后重新连接到同一设备时,ios 正在缓存 BLE 外围设备的服务和特性(当然,在发现这些服务和特性之后)。所以重新发现的漫长过程是不必要的,我可以在重新连接后直接写入或读取这些特性。

在这个线程中: 有没有办法更快地发现 BLE 外围服务? 据说如果连接被加密,则服务和特征会被缓存。此外,在 WWDC 2013 Session 702 中,它说服务和特征已缓存,但未指定条件。

ios缓存BLE服务和特性的条件是什么?有人可以验证只需要加密连接吗?

0 投票
1 回答
610 浏览

ios - 如何使用 iPhone 应用程序向 BLE 设备发送 RGB 信号?

我们正在开发 iOS 应用程序,其中我们需要将 RGB 信号传递给 BLE 设备,并且基于 RGB 代码,设备 LED 会发光。我们正在使用iOS 应用程序中的蓝牙框架对象进行CBCentralManager连接。CBPeripheral

我们正在设置特征和描述符 UUID,但仍然无法在 BLE 设备上发送信号。这是我们用来以十六进制字节格式传递 RGB 数据的代码。

我们做对了吗?发送数据或创建CBMutableCharacteristic对象有什么问题吗?

0 投票
0 回答
841 浏览

objective-c - iOS CBCentralManager 未重新连接

我从手机连接到使用该设备的 UUID 和方法绑定的另一台设备

来自 CBCentralManager 对象。我在应用程序启动时自动执行此操作。一切正常,我可以使用连接的外围设备发送和接收数据。

然后,如果我超出范围,我就会与设备断开连接。当我回到范围内时,蓝牙会自动连接到绑定的设备,但我的 CBCentralManager 没有。所以我必须通过单击按钮并再次检索连接的外围设备来强制连接。这很烦人,所以我想知道,当先前连接的设备再次连接时,是否有任何方法被调用?或任何设备,不一定是已连接的设备,因为我有 UUID。

有关更多详细信息,我正在使用一个名为的单例类BluetoothHelper,该类在应用程序启动时进行实例化,并且我有 main CBCentralManagerobject @property (strong, nonatomic) CBCentralManager *bluetoothManager;。我通过以下方式对其进行初始化:

在 Singleton 的初始化中。然后,正如您在上面看到的,我在收到中央管理器状态后尝试连接到设备。

单例类在 AppDelegate 中初始化:

0 投票
1 回答
494 浏览

ios - CBCentralManagerDelegate 没有在 NSObject 中被调用

我创建一个继承自NSObject并添加delegate方法的类。在我的课堂上,我想使用 CBCentralManager 及其委托方法。但是委托方法没有被调用。这是我的代码 -

这是 VZBluetooth.h

对于 VZBluetooth.m

我的电话——

0 投票
0 回答
2070 浏览

bluetooth-lowenergy - CoreBluetooth - 将数据从 Central 写入 Peripheral

我参考了Apple为CoreBluetooth提供的示例应用程序,我成功地将数据从外围设备发送到中心,现在我需要将数据从中心写入外围设备。谷歌搜索后我发现它可以使用[_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];

以下是我的 Central 实现,用于向外围设备发送消息:

当我调用此方法时,它无法写入数据,而是在控制台上看到 CoreBluetooth 警告,如下所示,

如果有人给出获取外设对象的最佳方法以及如何启动从中心到外设的数据发送,那就太好了。

编辑 我已经尝试过如何从 Objective-C 中的 UUID 中获取特征?

但是,在这种情况下,每当我尝试这样做时,我都无法循环服务它返回 services=nil。

0 投票
1 回答
684 浏览

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

我正在 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。

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

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

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

0 投票
0 回答
749 浏览

ios - didConnectPeripheral 没有被调用。?

我正在研究 BLE 项目,我在此链接中有一个示例项目。所以当我在我的设备(iPhone 5C)上运行时,

被调用后,我能够获取外设名称、rssi 和一些基本细节。但在那之后,didConnectPeripheral其他的 CBPeripheral 都没有被调用。我正在使用EM MicroElectronic coin Beacon。请帮我。!

0 投票
2 回答
2153 浏览

ios - CoreBluetooth AdvertisementData 不包含 CBAdvertisementDataLocalNameKey?

我目前正在构建一个我想扫描可用设备的 CoreBluetooth 应用程序,问题是“didDiscoverPeripheral”中的 AdvertismentData 字典不包含 CBAdvertisementDataLocalNameKey - 它只包含 CBAdvDataChannel 和 CBAdvDataIsConnectable。这意味着我无法识别我的 BLE 设备。

有趣的是,Lightblue 应用程序(iOS BLE 扫描仪)能够显示名称,因此可能能够访问“CBAdvertisementDataLocalNameKey”。

有谁知道我做错了什么?我真的为此撕毁了我的头发!

这是我的代码的基本示例:

0 投票
0 回答
614 浏览

ios - 一段时间后,ble 外围设备在后台断开连接

我在 plist 中使用后台获取模式。当我们将外围设备连接到设备时,它会在后台工作片刻,但 10-15 分钟后它会自动断开连接。我希望我的外围设备始终连接。当应用程序从后台唤醒时调用哪个方法..

0 投票
0 回答
624 浏览

ios - 使用 Swift 发布和发现 BLE 失败

我正在尝试使用以下内容宣传 BLE

并想发现外围设备

然而 didDiscoverPeripheral 方法从未被调用。我正在测试两个 iPhone5。谁能告诉我我做错了什么?