iOS 7 的核心蓝牙弃用

Posted

技术标签:

【中文标题】iOS 7 的核心蓝牙弃用【英文标题】:Core Bluetooth deprecations for iOS 7 【发布时间】:2013-11-14 17:26:49 【问题描述】:

ios 7 中,一些核心蓝牙功能现已弃用,例如 CBUUIDGenericAccessProfileString 和 CBUUIDDeviceNameString。 apple docs 状态

"(Deprecated. There are no replacements for these constants.)"

我想知道我们应该做些什么来替换这些 GAP 东西,因为苹果文档和示例没有帮助。整个互联网似乎也对此保持沉默。我的代码与Heart Rate Monitor example 非常相似,它仍然具有已弃用的代码

/* GAP (Generic Access Profile) for Device Name */
if ( [aService.UUID isEqual:[CBUUID UUIDWithString:CBUUIDGenericAccessProfileString]] )

    [aPeripheral discoverCharacteristics:nil forService:aService];

【问题讨论】:

【参考方案1】:

你直接使用通用访问服务 UUID 怎么样?

if ( [aService.UUID isEqual:[CBUUID UUIDWithString:@"1800"]] )//0x1800 is the Generic Access Service Identifier

    [aPeripheral discoverCharacteristics:nil forService:aService];

在此处查看Generic Access Service 的详细信息。

【讨论】:

嗯,这确实解决了弃用警告......但它并不能真正解释为什么如果我们应该自己手动重新制作常量,他们会费心去弃用常量!我认为苹果只是讨厌我们 另外,CBUUIDDeviceNameString 可以在这里找到:developer.bluetooth.org/gatt/characteristics/Pages/…,它是 0x2A00

以上是关于iOS 7 的核心蓝牙弃用的主要内容,如果未能解决你的问题,请参考以下文章

iOS蓝牙编程指南 -- 核心蓝牙概述

IOS核心蓝牙:为特性编写NSData

ios 核心蓝牙与外部 BLE 设备配对

iOS 核心蓝牙 CBCentralManager scanForPeripheralsWithServices 无结果

使用核心蓝牙 ios 扫描外围设备时如何更改特征顺序

iOS 蓝牙