问题标签 [cbperipheral]
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.
ios - DidReceiveWriteRequest 在 IOS BLE 中没有被调用
我正在尝试从中心向外围发送响应。该代码两次运行良好。突然didReceiveWriteRequest
不叫了。我什至没有做任何更改。外围给出的属性是 CBCharacteristicsPropertyNotify | CBCharacteristicsPropertyWriteWithResponse and CBCharacteristicPropertyWrite
. 给定的权限是CBAttributePermissionsWriteable | CBAttributePermissionsReadable
. 在中心,我在didDiscoverCharacteristicsForService
方法中给出了 setNotifyValue=YES。这就是我尝试从中心写作的方式:
我在我所做的事情中找不到任何错误。出于某种原因,没有在外围设备调用 didReceiveWriteRequest。请指教。
ios - 一台设备的 CBCentral 和 CBPeripheral 标识符是否相同
标题说明了一切。我想知道的是,如果一个设备被用作外围设备和中央设备并且靠近另一个被用作外围设备和中央设备的设备,那么每个设备上的外围设备管理器和中央管理器是否会看到相同的“标识符”属性在 CBPeripheral 和 CBCentral 对象上对应于该区域中的其他设备?
ios - 从 CBCentral 更新特征值
我已经成功地让我的 iOS 应用程序(外围)向我的 OSX 应用程序(中央)发送消息。
我现在在尝试让 Central 更新特征值并从 Peripheral 读取它时遇到问题。
如果我将 CBCharacteristicProperties 更改为 Notify 以外的任何内容,我的中心无法订阅该特征并出现以下错误:“不允许写入”。
据我了解,为了必须将 Central 写入 Peripheral,我应该在 Peripheral 中使用上述行的组合,并带有此事件:
这在中央更新特征值:
请让我知道我做错了什么。任何展示如何做我想做的事情的示例项目都将受到高度赞赏。
谢谢
ios8 - CBService/CBCharacteristic UUIDString 返回 nil
我有一个 iOS 应用程序,当它第一次与我的 OSX 应用程序通信时会生成一个新的 UUID,然后存储它,这样我就可以为不同的设备设置不同的特征标识符。
打电话后
在 OSX 应用程序的“didDiscoverServices”方法中,在“didDiscoverCharacteristicsForService”中,我这样做是为了找出新设备的 UUID 是什么,以便检查他们之前是否交谈过,如果没有,我将存储它:
问题是它打印 nil,如果我改用characteristic.UUID,它会给我“未知(<46c35c38 c4994106 b6d351c9 8d900368>)”,这不是我想要处理的格式。
知道为什么吗?
我注意到的另一件事是,在测试了我用 LightBlue 反复解释的内容以查看我的应用程序在宣传什么之后,有时某些服务/特性似乎卡住了并且不会消失,我什至不得不恢复我的手机以摆脱它们一次。这是正常的吗?
非常感谢
ios - 使用 CoreBluetooth 提高文件传输速度
我目前有我的 OSX 应用程序(中央)通过使用 writeValue 的可写特征向我的 iOS 应用程序(外围)发送 4Kb 图像。
由于图像大小超出限制,我多次使用 writeValue 和以下函数:
我的问题是它需要的时间比我需要的要长得多,大约 30 秒。
奇怪的是,即使我在发送图像时使用 CBCharacteristicWriteType.WithoutResponse ,我也会得到他们的响应,我想知道这是否会使其变慢。
这就是我在外围设备方面的特色设置:
我为 NOTIFY_MTU 尝试了不同的值,范围从 20 到 900,但它越高,writeValue 执行的次数越少,但每个包到达所需的时间越长。
我已经看到传输执行得更快,关于如何改进它的任何建议?
谢谢
ios - CoreBluetooth 设备名称更改
我目前正在创建一个简单的 iOS 蓝牙应用程序。我目前有一个能够修改名称的设备。我发现当我连接到 CBPeripheral 设备时,它似乎正在缓存旧设备名称。
- 通过我的应用程序连接到设备。
- 通过我的应用程序与设备断开连接。
- 更改设备的名称。
- 通过我的应用程序(使用现有的 CBPeripheral 对象)重新发现/重新连接到设备。
按照上面的步骤,我希望我的 iOS 应用程序能够发现新的设备名称。但是,我发现它倾向于保留旧名称。通过两次与 CBPeripheral 设备断开连接,我发现我可以检索到新名称。
所以我的问题是,有没有办法更新或清除 CBPeripheral 现有的已发现特性(或每次重新发现新特性)以获得最新的设备名称?
这是一个类似的问题:CoreBluetooth: Refreshing local name of an already found Peripheral
ios8 - 除非重新启动蓝牙,否则 CBCentral 无法找到外围设备的服务
我有两个应用程序通过 CoreBluetooth、iOS 和 Today Extension(外围)和 OSX(中央)进行通信。
1 - 设置过程(iOS 应用程序 x OSX 应用程序):它们连接、交换存储的数据并断开连接。
2 - 应用程序的主要功能使用(iOS Today Extension x OSX 应用程序):它们连接、交换数据和断开连接。
除非我在第 1 步和第 2 步之间关闭并再次打开 iPhone 的蓝牙,否则 OSX 应用程序会找到 iPhone,连接,但在 OSX 应用程序中调用 peripheral.discoverServices 后从 Today Extension 中找到 0 个服务。
如果我确实关闭和打开蓝牙,一切都会按预期进行。会是什么呢?非常欢迎任何帮助。谢谢!
更新:在 OSX 上使用 LightBlue 后,我能够确认,除非我重新启动蓝牙,否则步骤 1 中使用的 UUID 服务会继续被宣传,只有当我重新启动蓝牙时,才会显示步骤 2 中使用的 UUID。
ios7 - iOS 7.1 BLE 外设广告问题
我写了一个应用程序,广告和扫描同时进行。它运行良好,但我有一个问题。一段时间后mz外围停止广告。
我试图重新启动,但我的手机和应用程序仍然无法正常工作。
这是外围实现:
ios - 我们可以使用 Core-Bluetooth 模拟“不可连接”的外围设备吗
我希望我的应用程序发送“不可连接”广告?
当我看到该startAdvertsing
方法时,它说只有CBAdvertisementDataLocalNameKey
并且CBAdvertisementDataServiceUUIDsKey
受支持。
这是否意味着CBAdvertisementDataIsConnectable
不能设置为 NO 来模拟iBeacon
?
如果有其他方法可以模拟“不可连接”的外围设备,请告诉我。
advertisementData
- 包含您要宣传的数据的可选字典。advertisementData
字典的可能键在CBCentralManagerDelegate
协议参考中有详细说明。也就是说,外围管理器对象仅支持其中两个键:CBAdvertisementDataLocalNameKey
和CBAdvertisementDataServiceUUIDsKey
ios - didDiscoverPeripheral 在广告另一台 iOS 设备后未被调用
基本上我有两个应用程序,一个用于扫描蓝牙设备,另一个用于广告,我想做的是获取所有 iOS 设备的列表,在我附近的扫描 iOS 设备的应用程序上。
到目前为止,这是我的代码:
扫描.m:
广告.m:
当我在不同的 iphone 上运行不同的应用程序时,什么也没有发生!
这不会崩溃,但didDiscoverPeripheral
永远不会被调用:(请帮帮我!是的,我已经阅读了文档,但仍然没有好处:((
干杯