swift - 核心蓝牙 CBAdvertisementDataServiceDataKey 可以有一些自定义数据吗?
问题描述
我正在尝试使用 BLE 在 android 和 iOS 设备之间发送一些数据,但我需要在 iOS 侧向 android 发送一些自定义信息,我已经尝试了 CBCentralManager 提供的几乎所有键,但我尝试发送一些字符串使用密钥 CBAdvertisementDataServiceDataKey 但没有任何反应,有人知道如何在该密钥中发送信息吗?
提前我尝试在没有联系的情况下获得这些信息。
这是我用来尝试制作我之前解释的那部分的功能。
func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
if peripheral.state == .poweredOn{
let data = CBMutableCharacteristic(type: hardCodeUUID, properties: [.read], value: userName.data(using: .utf8), permissions: [.readable])
peripherialManager.startAdvertising([ CBAdvertisementDataLocalNameKey:"Jael2522",CBAdvertisementDataServiceDataKey:userName.data(using: .utf8),CBAdvertisementDataServiceDataKey:[CBUUID(string: "Jose")]])
let serialService = CBMutableService(type: hardCodeUUID, primary: true)
serialService.characteristics = [data]
peripherialManager.add(serialService)
}
}
解决方案
CBAdvertisementDataServiceDataKey 在 iOS 中是只读的。您可以直接宣传的唯一内容是本地名称和服务 UUID 列表(两者都不能保证会被宣传,但如果它们可以放入数据包中,它们将在您的应用程序处于前台时进行宣传)。
为了在设备之间可靠地发送数据,您需要一侧实际连接并读取或写入特征。
推荐阅读
- connection - SQL Developer 连接到 Exasol DB
- excel - 用于在所有单元格上重复直到找到空白单元格的 VBA 代码
- arrays - 在页面模板液体(Shopify)中显示来自 settings_data.json 的 JSON 数据数组
- docker - 在 docker 中运行的 Geth 发生 OOM
- android - 在 Android 之外实现 Wifi-Aware 应用程序
- websphere - 我们如何在 WebLogic 和 WebSphere 中设置 X-Frame-Options 响应标头?
- python - python mysql更新与来自json的api
- json - jq 将 JSON 子数组对象转换为分隔字符串
- git - 什么版本的 Git 支持 TLS 1.2?
- json - 反序列化来自 web 服务的 json 数据