问题标签 [cbperipheralmanager]

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 回答
703 浏览

ios - 为什么我的外围设备无法连接到其他设备?

我的 iPad mini(iOS7.1.2) 有我的应用程序使用 CoreBluetooth 作为外围设备。它的 state( CBPeripheralManager::state) 是PoweredOn,并且在添加和开始宣传我的服务时没有任何其他错误。但是,外围设备周围的任何中央设备都无法连接到它。

当然,我认为中央设备可能存在问题。这不是真的,因为这些中央设备可以与除“那个外围设备”之外的其他外围设备连接。当我试图与外围设备连接时,- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error被调用。(错误代码为 7)。

外围设备没有显示任何错误,并且中央设备在重新启动外围设备之前无法连接。我应该多做些什么?我应该将设备升级到 iOS8 吗?

ps 中心设备多种多样,从iPhon4s到iPhone6+,从iOS7.0.6到iOS8.2。中央设备和外围设备都没有问题。

ps 只发生过一次,但是在奇怪的状态下,外围状态突然变成了ResettingPoweredOn又一次。之后,连接就没有问题了。不知道为什么状态突然变成了 Resetting,状态是怎么变的。

+添加 @ 04081228 (GMT+0000)

我从试图与外围设备连接的中央设备中发现了一些可疑的日志。以下是一些日志。

4 月 8 日 21:20:57 BTServer[61]:ATT 无法在设备“9C3C82F8-50F5-FE2C-EE41-D8B8B85D7DA3”上找到 GATT 主>服务

Apr 8 21:20:57 BTServer[61] : ATT Aborting command as device >"9C3C82F8-50F5-FE2C-EE41-D8B8B85D7DA3" 不再连接

4 月 8 日 21:21:08 BTServer[61]:ATT 无法在设备“9C3C82F8-50F5-FE2C-EE41-D8B8B85D7DA3”上找到 GATT 主>服务

Apr 8 21:21:08 BTServer[61] : ATT Aborting command as device >"9C3C82F8-50F5-FE2C-EE41-D8B8B85D7DA3" 不再连接

我发现来自 github 的评论说这是 iOS 的已知问题。不过,我找不到有关此的任何其他信息。

+添加@ 04081304 (GMT+0000)

我也找到了这个日志。我也不确定这意味着什么。

4 月 8 日 22:02:03 BTServer[61]:ATT 无法将 MTU 设置为 158,结果 BM3 STATUS 14

4 月 8 日 22:02:13 BTServer[61]:ATT 无法将 MTU 设置为 158,结果 BM3 STATUS 14

0 投票
0 回答
614 浏览

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

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

0 投票
0 回答
113 浏览

ios - UITextView 被阻止,因为 peripheral:didUpdateValueForCharacteristic: 被调用非常快

我试图通过附加来自的数据在 UITextView 中显示数据peripheral:didUpdateValueForCharacteristic:error:。在这种情况下peripheral:didUpdateValueForCharacteristic:error:,调用非常频繁,因此UITextView( self.responseTextView) 要么无法打印任何数据,要么阻塞 UI。

0 投票
2 回答
1211 浏览

ios - 为什么不调用 CBPeripheralManagerDelegate 方法?

为什么不调用 CBPeripheralManagerDelegate 方法虽然我已将类初始化为 var bluetoothManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)

并且已经在我的 Bundle 中添加了蓝牙框架。

0 投票
0 回答
624 浏览

swift - 如何在 Swift 中重置 CoreBluetooth 的 CBPeripheralManager?

我正在使用 CoreBluetooth 快速编写一个应用程序,并且我正在寻找一种方法将 CBPeripheralManager 重置为与应用程序首次启动时相同的状态。

0 投票
1 回答
669 浏览

ios - CBCentralManager not calling didDiscoverPeripheral method when iPhone is locked

I am working on an app that scans for a specific peripheral, ones peripheral is found it should send the small amount of data.

App works in the foreground and also in background. I have also add this code in the plist

UIBackgroundModes bluetooth-central When iPhone is locked and peripheral starts advertising, it doesn't call

I have done some research but couldn't find an answer.

Any help is appreciated.

Thanks

0 投票
1 回答
1649 浏览

ios - 如何在 CBPeripheral 设备上编写命令?

我有一个有两个模块的 BLE 设备

1-蓝牙 (BlueCreation BC127A) 2-微控制器附有一些命令,如 LOGIN RESET VERSION 等。

我想向与 uC 通信的 BLE 写入命令。

按照我的规范/文档,数据包结构应该是这样的:在此处输入图像描述

当我在 BLE 上编写确切的命令时,出现错误:“值的长度无效。”

根据文档,它的数据包长度是 17,我认为这是错误的,因为当我得到它时 sizeof(byte)/sizeof(char); 我得到 4。我使用了这两个值,但我无法得到积极的回应。

我需要帮助通过成功编写命令来克服这个问题。这是我的第一个蓝牙集成项目。

我的代码遵循数据包结构,我的命令 LOGIN 变为:

谢谢。

0 投票
2 回答
2130 浏览

ios - iOS 蓝牙 peripheralManagerDidUpdateState 从未调用过

我正在尝试将我的 iPhone 设置为心率监测器并使用标准心率服务发送信息,以便我在 PC 上运行的应用程序可以检索数据。我是 iOS 的新手,但我之前在 Android 和 Windows 上运行过蓝牙。我正在关注这里的信息,但我遇到了第一个障碍......

如文档中所述,我首先调用

我还实现了 peripheralManagerDidUpdateState 回调,但问题就在这里。这个回调永远不会运行!我等了几分钟,什么也没发生。我怀疑我错过了一个非常简单的步骤,因为我已经搜索了一整天并且在网上一无所获!任何人都可以解释在代码和物理上用我的 iPhone 做事情的明确步骤吗?在此回调运行之前是否必须建立连接?它必须与任何东西配对吗?

这是完整的代码。一切运行良好,我完全没有错误。

0 投票
1 回答
189 浏览

ios - iOS:如何设置 iOS 设备作为蓝牙键盘?

我想要一个 iOS 设备告诉世界它是一个键盘,当人们与它配对时,它将能够发送击键。

根据论坛文章,看来我需要提供 4 项服务:1800(设备信息)、180f(电池)、1812(输入设备)、180a(制造商)。

我这样做了,BLE 实用程序报告了 4 个服务,但没有 1812 的迹象。

当我尝试将 iOS 外围设备与 OS/X 配对时,OS/X 放弃了,并且 iOS 应用程序的各种外围设备委托方法大部分都没有被调用(我在其中设置了断点)。例如,在我添加到每个服务的特性中,没有一个被读出或订阅。

谁能解释在 BLE 上宣传输入设备的正确方法是什么?

0 投票
0 回答
269 浏览

ios - CoreBluetooth [CBPeripheralManager respondToRequest:withResult:] 断言失败

在通过蓝牙相互发送数据的 iPhone 之间相当普遍地发生奇怪的崩溃。经过大量的努力,我仍然无法在调试器中重现它。

崩溃日志:

不知道是什么触发了外设管理器调用 handleSetAttributeValues 或 nil 值从这里来。

在代码库中只有一个地方我调用 [CBPeripheralManager respondToRequest:withResult:] 并且我在它周围有保护措施,以确保如果请求为零,它永远不会被调用。