说明
chrome.bluetoothLowEnergy
API 用于通过通用属性配置文件 (GATT) 与蓝牙智能(低功耗)设备进行通信。
清单
类型
Advertisement
属性
-
manufacturerData
ManufacturerData[] 可选
“制造商特定数据”中包含的制造商专用数据列表广告数据字段。
-
serviceData
ServiceData[] 选填
要包含在“服务数据”中的服务数据的列表广告数据字段。
-
serviceUuids
string[] 选填
要包含在“服务 UUID”中的 UUID 列表字段。这些 UUID 可以是 16 位、32 位或 128 格式。
-
solicitUuids
string[] 选填
要包含在“请求 UUID”中的 UUID 列表字段。这些 UUID 可以是 16 位、32 位或 128 格式。
-
广告类型。
AdvertisementType
广告类型。如果为“broadcast”则发送的广告类型将为 ADV_NONCONN_IND,且设备将使用随机 MAC 地址进行广播。如果设为“peripheral”,通告类型将为 ADV_IND 或 ADV_SCAN_IND,设备将使用真实蓝牙适配器的 MAC 地址进行广播。
枚举
"broadcast"
"peripheral"
Characteristic
属性
-
instanceId
字符串(可选)
返回分配给此特征的标识符。使用实例 ID 来区分具有同一 UUID 的外围设备的特性,并执行接受特征标识符的函数调用。此实例表示远程特征时存在。
-
媒体资源
此特征的属性。
-
服务
服务 可选
此特征所属的 GATT 服务。
-
uuid
字符串
特征的 UUID,例如00002a37-0000-1000-8000-00805f9b34fb.
-
值
ArrayBuffer 可选
当前缓存的特征值。通过通知或指示读取或更新特征值时,此值会更新。
CharacteristicProperty
表示特征可能属性的值。特征权限是根据这些属性推断出来的。要了解各个属性的含义,请参阅蓝牙 4.x 规范。
枚举
"broadcast"
"read"
"writeWithoutResponse"
"write"
“通知”
""指示"
"authenticatedSignedWrites"
"extendedProperties"
"reliableWrite"
"writableAuxiliaries"
“encryptRead”
“encryptWrite”
"encryptAuthenticatedRead"
"encryptAuthenticatedWrite"
ConnectProperties
属性
-
持久性
布尔值
此标记指示在应用的事件页面被卸载时,与设备的连接是否保持打开状态(请参阅管理应用生命周期)。默认值为
false.
。
Descriptor
属性
-
特征
特征(可选)
此描述符所属的 GATT 特征。
-
instanceId
字符串(可选)
返回分配给此描述符的标识符。您可以使用实例 ID 来区分描述符与 UUID 相同的外围设备,并执行接受描述符标识符的函数调用。此实例表示远程特征时存在。
-
权限Chrome 52 及更高版本
此描述符的权限。
-
uuid
字符串
特征描述符的 UUID,例如00002902-0000-1000-8000-00805f9b34fb.
-
值
ArrayBuffer 可选
当前缓存的描述符值。读取描述符的值时,此值会更新。
DescriptorPermission
表示描述符可能权限的值。要了解各个权限的含义,请参阅蓝牙 4.x 规范。
枚举
"read"
"write"
“encryptedRead”
“encryptedWrite”
“cryptoAuthenticatedRead”
“encryptedAuthenticatedWrite”
Device
属性
-
地址
字符串
设备地址,格式为“XX:XX:XX:XX:XX:XX”。
-
deviceClass
编号(选填)
设备的类别,由 http://www.bluetooth.org/zh-CN/specification/allocate-numbers/baseband 定义的位字段。
-
name
字符串(可选)
人类可读的设备名称。
ManufacturerData
属性
-
数据
数值 []
-
id
number
Notification
属性
-
shouldIndicate
布尔值(可选)
用于发送指示(而不是通知)的可选标志。
-
值
数组缓冲区
特征的新值。
NotificationProperties
属性
-
持久性
布尔值
此标记指示应用在事件页面卸载时是否应接收通知(请参阅管理应用生命周期)。默认值为
false
。
Request
属性
-
设备
发送此请求的设备。
-
requestId
number
此请求的唯一 ID。回复此请求时使用此 ID。
-
值
ArrayBuffer 可选
要写入的值(如果是写入请求)。
Response
属性
-
isError
布尔值
如果这是错误响应,则应为 true。
-
requestId
number
要响应的请求的 ID。
-
值
ArrayBuffer 可选
响应值。写入请求和错误响应将忽略此参数。
Service
属性
-
deviceAddress
字符串(可选)
GATT 服务所属的远程外围设备的设备地址。此实例表示远程服务时存在。
-
instanceId
字符串(可选)
返回分配给此服务的标识符。使用实例 ID 区分服务与具有相同 UUID 的外围设备,以及执行接受服务标识符的函数调用。此实例表示远程服务时存在。
-
isPrimary
布尔值
指明此服务的类型是主要还是次要。
-
uuid
字符串
服务的 UUID,例如0000180d-0000-1000-8000-00805f9b34fb.
ServiceData
属性
-
数据
数值 []
-
uuid
字符串
方法
connect()
chrome.bluetoothLowEnergy.connect(
deviceAddress: string,
properties?: ConnectProperties,
callback?: function,
)
在应用和具有指定地址的设备之间建立连接。设备可能已经处于连接状态且无需调用 connect
即可使用其 GATT 服务,但是,想要访问设备 GATT 服务的应用应调用此函数,以确保与设备保持连接。如果设备未连接,则在成功调用 connect
后,即可发现设备的所有 GATT 服务。
参数
-
deviceAddress
字符串
应打开 GATT 连接的远程设备的蓝牙地址。
-
媒体资源
连接属性(可选)。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
createCharacteristic()
chrome.bluetoothLowEnergy.createCharacteristic(
characteristic: Characteristic,
serviceId: string,
callback?: function,
)
创建本地托管的 GATT 特性。此特征必须由有效服务托管。如果服务 ID 无效,则将设置 lastError。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
特征
要创建的特征。
-
serviceId
字符串
要为其创建此特征的服务的 ID。
-
callback
函数(可选)
callback
参数如下所示:(characteristicId: string) => void
-
characteristicId
字符串
-
返回
-
承诺<字符串>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
createDescriptor()
chrome.bluetoothLowEnergy.createDescriptor(
descriptor: Descriptor,
characteristicId: string,
callback?: function,
)
创建本地托管的 GATT 描述符。此描述符必须以有效特征托管。如果特征 ID 无效,则设置 lastError。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
描述符
要创建的描述符。
-
characteristicId
字符串
要为其创建此描述符的特征的 ID。
-
callback
函数(可选)
callback
参数如下所示:(descriptorId: string) => void
-
descriptorId
字符串
-
返回
-
承诺<字符串>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
createService()
chrome.bluetoothLowEnergy.createService(
service: Service,
callback?: function,
)
创建本地托管的 GATT 服务。此服务可注册为可在本地 GATT 服务器上使用。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
服务
要创建的服务。
-
callback
函数(可选)
callback
参数如下所示:(serviceId: string) => void
-
serviceId
字符串
-
返回
-
承诺<字符串>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
disconnect()
chrome.bluetoothLowEnergy.disconnect(
deviceAddress: string,
callback?: function,
)
关闭应用与具有给定地址的设备的连接。请注意,此操作不一定会销毁物理链接本身,因为可能有其他应用打开了连接。
参数
-
deviceAddress
字符串
远程设备的蓝牙地址。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getCharacteristic()
chrome.bluetoothLowEnergy.getCharacteristic(
characteristicId: string,
callback?: function,
)
通过属于指定 GATT 服务的指定实例 ID 获取 GATT 特征(如果存在)。
参数
-
characteristicId
字符串
所请求的 GATT 特征的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:(result: Characteristic) => void
-
结果
-
返回
-
Promise<具有特征性>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getCharacteristics()
chrome.bluetoothLowEnergy.getCharacteristics(
serviceId: string,
callback?: function,
)
获取已发现的属于指定服务的所有 GATT 特征的列表。
参数
-
serviceId
字符串
应返回其特征的 GATT 服务的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:(result: Characteristic[]) => void
-
结果
特征[]
-
返回
-
承诺<特征[]>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getDescriptor()
chrome.bluetoothLowEnergy.getDescriptor(
descriptorId: string,
callback?: function,
)
获取具有指定实例 ID 的 GATT 特征描述符。
参数
-
descriptorId
字符串
所请求的 GATT 特征描述符的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:(result: Descriptor) => void
-
结果
-
返回
-
Promise<Descriptor>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getDescriptors()
chrome.bluetoothLowEnergy.getDescriptors(
characteristicId: string,
callback?: function,
)
获取属于给定特征的 GATT 特征描述符列表。
参数
-
characteristicId
字符串
应返回其描述符的 GATT 特征的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:(result: Descriptor[]) => void
-
结果
描述符[]
-
返回
-
Promise<Descriptor[]>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getIncludedServices()
chrome.bluetoothLowEnergy.getIncludedServices(
serviceId: string,
callback?: function,
)
获取指定服务包含的 GATT 服务的列表。
参数
getService()
chrome.bluetoothLowEnergy.getService(
serviceId: string,
callback?: function,
)
获取具有指定实例 ID 的 GATT 服务。
参数
-
serviceId
字符串
所请求的 GATT 服务的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:(result: Service) => void
-
结果
-
返回
-
Promise<Service>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getServices()
chrome.bluetoothLowEnergy.getServices(
deviceAddress: string,
callback?: function,
)
获取在远程设备上根据指定设备地址发现的所有 GATT 服务。
注意:如果设备上尚未完成服务发现,此 API 将返回一部分服务(可能为空)。解决方法是添加基于时间的延迟和/或反复调用,直到返回预期数量的服务。
参数
notifyCharacteristicValueChanged()
chrome.bluetoothLowEnergy.notifyCharacteristicValueChanged(
characteristicId: string,
notification: Notification,
callback?: function,
)
通知远程设备某个特征的新值。如果通知对象中的 shouldDevices 标记为 true,则系统会发送指示而非通知。请注意,该特性需要正确设置“通知”或“指示”属性,才能使此调用成功。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
characteristicId
字符串
要为其发送通知的特征。
-
通知
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
readCharacteristicValue()
chrome.bluetoothLowEnergy.readCharacteristicValue(
characteristicId: string,
callback?: function,
)
从远程外围设备检索指定特征的值。
参数
-
characteristicId
字符串
GATT 特征的实例 ID,应从远程设备读取该特征的值。
-
callback
函数(可选)
callback
参数如下所示:(result: Characteristic) => void
-
结果
-
返回
-
Promise<具有特征性>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
readDescriptorValue()
chrome.bluetoothLowEnergy.readDescriptorValue(
descriptorId: string,
callback?: function,
)
从远程外围设备检索指定特征描述符的值。
参数
-
descriptorId
字符串
GATT 特征描述符的实例 ID,该描述符的值应从远程设备读取。
-
callback
函数(可选)
callback
参数如下所示:(result: Descriptor) => void
-
结果
-
返回
-
Promise<Descriptor>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
registerAdvertisement()
chrome.bluetoothLowEnergy.registerAdvertisement(
advertisement: Advertisement,
callback?: function,
)
创建广告并将其注册以便投放广告。如需调用此函数,应用必须将 bluetooth:low_energy 和 bluetooth:peripheral 权限设置为 true。此外,此 API 仅适用于在自助服务终端模式下自动启动的应用,或者通过设置“--enable-ble-advertising-in-apps”命令行开关。请参阅 https://developer.chrome.com/apps/manifest/bluetooth 注意:在某些硬件上,可以同时支持中心模式和外围设备模式,但在不支持此模式的硬件上,进行此调用会将设备切换到外围设备模式。如果硬件既不支持中央模式,也不支持外围设备模式,尝试在这两种模式下使用设备会导致未定义的行为,或阻止其他中央角色应用正常运行(包括发现蓝牙低功耗设备)。
参数
-
广告
要宣传的广告。
-
callback
函数(可选)
callback
参数如下所示:(advertisementId: number) => void
-
advertisementId
number
-
返回
-
Promise<number>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
registerService()
chrome.bluetoothLowEnergy.registerService(
serviceId: string,
callback?: function,
)
在本地 GATT 服务器中注册指定服务。如果服务 ID 无效,则设置 lastError。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
serviceId
字符串
已创建服务的唯一 ID。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
removeService()
chrome.bluetoothLowEnergy.removeService(
serviceId: string,
callback?: function,
)
移除指定的服务,如果已注册,则将其取消注册。如果服务 ID 无效,则设置 lastError。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
serviceId
字符串
当前注册服务的唯一 ID。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
resetAdvertising()
chrome.bluetoothLowEnergy.resetAdvertising(
callback?: function,
)
重置当前设备上的通告。此操作将取消注册并停止所有现有广告。
参数
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
sendRequestResponse()
chrome.bluetoothLowEnergy.sendRequestResponse(
response: Response,
)
针对特征或描述符读/写请求发送响应。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
Response
对请求的响应。
setAdvertisingInterval()
chrome.bluetoothLowEnergy.setAdvertisingInterval(
minInterval: number,
maxInterval: number,
callback?: function,
)
Set 是两个连续通告之间的时间间隔。注意:这是尽力而为。实际间隔可能与请求的间隔有很大差异。在某些硬件上,最短间隔时间为 100 毫秒。最小值和最大值不能超过蓝牙 4.2 规范允许的范围。
参数
-
minInterval
number
广告之间的最小时间间隔(以毫秒为单位)。此时间不能短于 20 毫秒(根据规范)。
-
maxInterval
number
广告之间的最大时间间隔(以毫秒为单位)。此值不能超过 10240 毫秒(根据规范)。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
startCharacteristicNotifications()
chrome.bluetoothLowEnergy.startCharacteristicNotifications(
characteristicId: string,
properties?: NotificationProperties,
callback?: function,
)
启用来自指定特征的值通知/指示。启用后,应用即可使用 onCharacteristicValueChanged
事件监听通知。
参数
-
characteristicId
字符串
应启用通知的 GATT 特征的实例 ID。
-
媒体资源
通知会话属性(可选)。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
stopCharacteristicNotifications()
chrome.bluetoothLowEnergy.stopCharacteristicNotifications(
characteristicId: string,
callback?: function,
)
停用来自指定特征的值通知/指示。成功调用后,应用将停止接收该特征的通知/指示。
参数
-
characteristicId
字符串
应停止此应用的通知会话的 GATT 特征的实例 ID。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
unregisterAdvertisement()
chrome.bluetoothLowEnergy.unregisterAdvertisement(
advertisementId: number,
callback?: function,
)
取消注册广告并停止其广告。如果通告失败,则停止通告的唯一方式可能是重启设备。
参数
-
advertisementId
number
要取消注册的广告的 ID。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
unregisterService()
chrome.bluetoothLowEnergy.unregisterService(
serviceId: string,
callback?: function,
)
在本地 GATT 服务器上取消注册指定服务。如果服务 ID 无效,则设置 lastError。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此功能才可用。部分应用可能无法使用外围设备权限。
参数
-
serviceId
字符串
当前注册服务的唯一 ID。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
writeCharacteristicValue()
chrome.bluetoothLowEnergy.writeCharacteristicValue(
characteristicId: string,
value: ArrayBuffer,
callback?: function,
)
写入远程外围设备中指定特征的值。
参数
-
characteristicId
字符串
GATT 特征的实例 ID,应写入该特征的值。
-
值
数组缓冲区
应作为写入请求的一部分发送到远程特征的值。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
writeDescriptorValue()
chrome.bluetoothLowEnergy.writeDescriptorValue(
descriptorId: string,
value: ArrayBuffer,
callback?: function,
)
从远程外围设备写入指定特征描述符的值。
参数
-
descriptorId
字符串
GATT 特征描述符的实例 ID,应向其写入该描述符的值。
-
值
数组缓冲区
应作为写入请求的一部分发送到远程描述符的值。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 91 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
事件
onCharacteristicReadRequest
chrome.bluetoothLowEnergy.onCharacteristicReadRequest.addListener(
callback: function,
)
在连接的中央设备请求读取在本地 GATT 服务器上注册的特征值时触发。长时间不回应此请求可能会导致断开连接。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此事件才可用。部分应用可能无法使用外围设备权限。
参数
-
callback
函数
callback
参数如下所示:(request: Request, characteristicId: string) => void
-
request
-
characteristicId
字符串
-
onCharacteristicValueChanged
chrome.bluetoothLowEnergy.onCharacteristicValueChanged.addListener(
callback: function,
)
当远程 GATT 特性的值因读取请求或值更改通知/指示而发生变化时触发。只有在应用通过调用 startCharacteristicNotifications
启用了通知时,系统才会发送此事件。
参数
-
callback
函数
callback
参数如下所示:(characteristic: Characteristic) => void
-
特征
-
onCharacteristicWriteRequest
chrome.bluetoothLowEnergy.onCharacteristicWriteRequest.addListener(
callback: function,
)
当连接的中央设备请求写入在本地 GATT 服务器上注册的特征值时触发。长时间不回应此请求可能会导致断开连接。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此事件才可用。部分应用可能无法使用外围设备权限。
参数
-
callback
函数
callback
参数如下所示:(request: Request, characteristicId: string) => void
-
request
-
characteristicId
字符串
-
onDescriptorReadRequest
chrome.bluetoothLowEnergy.onDescriptorReadRequest.addListener(
callback: function,
)
当连接的中央设备请求读取在本地 GATT 服务器上注册的描述符的值时会触发。长时间不回应此请求可能会导致断开连接。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此事件才可用。部分应用可能无法使用外围设备权限。
参数
-
callback
函数
callback
参数如下所示:(request: Request, descriptorId: string) => void
-
request
-
descriptorId
字符串
-
onDescriptorValueChanged
chrome.bluetoothLowEnergy.onDescriptorValueChanged.addListener(
callback: function,
)
在远程 GATT 特征描述符的值发生更改时触发,通常是由于读取请求所致。此事件主要是为了方便起见,将始终在成功调用 readDescriptorValue
后发送。
参数
-
callback
函数
callback
参数如下所示:(descriptor: Descriptor) => void
-
描述符
-
onDescriptorWriteRequest
chrome.bluetoothLowEnergy.onDescriptorWriteRequest.addListener(
callback: function,
)
当连接的中央设备请求写入在本地 GATT 服务器上注册的描述符的值时会触发。长时间不回应此请求可能会导致断开连接。只有当应用的 bluetooth:low_energy 和 bluetooth:peripheral 权限都设置为 true 时,此事件才可用。部分应用可能无法使用外围设备权限。
参数
-
callback
函数
callback
参数如下所示:(request: Request, descriptorId: string) => void
-
request
-
descriptorId
字符串
-
onServiceAdded
chrome.bluetoothLowEnergy.onServiceAdded.addListener(
callback: function,
)
在远程设备上发现新的 GATT 服务时触发。
onServiceChanged
chrome.bluetoothLowEnergy.onServiceChanged.addListener(
callback: function,
)
在远程 GATT 服务的状态更改时触发。这涉及到服务中添加或移除的任何特征和/或描述符,以及“ServiceChanged”通知。
onServiceRemoved
chrome.bluetoothLowEnergy.onServiceRemoved.addListener(
callback: function,
)
之前在远程设备上发现的 GATT 服务已被移除时触发。