首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EAAccessory.Name与配对的设备名称不匹配

EAAccessory.Name与配对的设备名称不匹配
EN

Stack Overflow用户
提问于 2018-06-13 11:48:06
回答 2查看 571关注 0票数 6

我有一个iOS应用程序。我可以成功连接到我的配对EAAccessory (经典蓝牙)。我能够从通过EAAccessory对象公开的设备中提取信息。我注意到的一件事是配对的设备的名称(在我的设置->蓝牙->我的设备列表中)与我的EAAccessory对象公开的设备的名称不匹配。我觉得这很奇怪。

有没有办法通过我的iOS应用程序获取设备的实际名称(来自设置页面)?

EN

回答 2

Stack Overflow用户

发布于 2018-06-21 21:13:56

你没有提到这是蓝牙Classic还是BLE ?,我下面的答案是蓝牙Classic,我记得我以前见过这样的东西,这是我到目前为止的发现:

请看一下Accessory Design Guidelines,特别是2.1.52.1.8部分。

2.1.5:

在蓝牙发现过程中,苹果产品更喜欢显示发现的附件的友好名称。在2.1版本的蓝牙规范之前,Apple产品必须建立到附件的连接并执行远程名称请求,这需要耗费电源、天线时间和用户时间。蓝牙2.1中引入的扩展查询响应功能允许附件将其本地名称和其他信息作为查询响应的一部分发送,从而提高发现过程的速度和效率。本地名称应与附件的标记和包装相匹配,并且不包含':‘或';’。

另请查看设备类部分

2.1.8:

每个与苹果产品兼容的附件都必须使用蓝牙SIG定义的主要设备类和次要设备类准确设置其设备类。请参阅蓝牙核心规范5.0版中的第3卷,C部分,3.2.4节。例如,打算在车辆中运行的音频/视频附件应将主要设备类别设置为音频/视频,将次要设备类别设置为汽车音频。

您的情况可能只是附件具有友好名称的事实,并且iOS在设置时没有清除该名称的缓存,或者这可能是固件端的错误实现。

如果这不能回答你的问题,请让我知道你在设置和你的应用程序中看到了什么名字,以及这是什么类型的附件,如果适用于固件版本,我将尝试进一步调查。

票数 1
EN

Stack Overflow用户

发布于 2018-06-21 15:31:01

如果您有成对/连接的设备的通告UUID,则可以获取这些设备的列表。

代码语言:javascript
复制
var centralQueu = DispatchQueue(label: "A_NAME")
centralManager = CBCentralManager(delegate: self, queue: centralQueu, options: [CBCentralManagerOptionRestoreIdentifierKey: "RESTORE_KEY", CBCentralManagerOptionShowPowerAlertKey: true])
ServiceUUIDs = [CBUUID(string: "THE_UUID")]
//the array of CBUUIDs which you are looking for

您需要找到您感兴趣的服务UUID:

代码语言:javascript
复制
var options = [
    CBCentralManagerScanOptionAllowDuplicatesKey : (1)
]
centralManager.scanForPeripherals(withServices: [CBUUID(string: SERVICE_UUID)], options: options)

centralManager.retrieveConnectedPeripherals(withServices: ServiceUUIDs)

这样处理didDiscoverperipheral:

代码语言:javascript
复制
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    discoveredPeripheral = peripheral
    if !mRemoteDevices.contains(discoveredPeripheral) {
        let peripherels = centralManager.retrievePeripherals(withIdentifiers: [discoveredPeripheral.identifier])
        mRemoteDevices.append(peripherels[0])
    }
}

此代码从objective-C转换为swift如果您熟悉objective C,则原始代码为here.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50828815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档