加了设备名称就发不了13个uuid 数据 ,不加名称 携带的设备类型名 又是未知 ,应该怎么做 ,可用 又发送13个uuid的数据,设备类型名 还能是正确的

import { ble } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
const TAG: string = 'BleAdvertisingManager';
export class BleAdvertisingManager {
private advHandle: number = 0xFF; // 初始的无效值
// 1. 定义广播状态上报事件
onReceiveEvent = (data: ble.AdvertisingStateChangeInfo) => {
console.info(TAG, 'bluetooth advertising state = ' + JSON.stringify(data));
AppStorage.setOrCreate('advertiserState', data.state);
};
// 2. 首次启动广播
public async startAdvertising() {
// 2.1 设置广播发送的参数
let setting: ble.AdvertiseSetting = {
interval: 160,
txPower: 0,
connectable: true,
};
// 2.2 构造广播数据
let manufactureValueBuffer = new Uint8Array();
manufactureValueBuffer[0] = 1;
manufactureValueBuffer[1] = 2;
manufactureValueBuffer[2] = 3;
manufactureValueBuffer[3] = 4;
let serviceValueBuffer = new Uint8Array(4);
serviceValueBuffer[0] = 5;
serviceValueBuffer[1] = 6;
serviceValueBuffer[2] = 7;
serviceValueBuffer[3] = 8;
let manufactureDataUnit: ble.ManufactureData = {
manufactureId: 4567,
manufactureValue: manufactureValueBuffer.buffer
};
let serviceDataUnit1: ble.ServiceData = {
serviceUuid: "0000181A-0000-1000-8000-00805F9B34FB",
serviceValue: serviceValueBuffer.buffer
};
let serviceDataUnit2: ble.ServiceData = {
serviceUuid: "19991999-0000-1000-8000-00805f9b34fb",
serviceValue: serviceValueBuffer.buffer
};
let advData: ble.AdvertiseData = {
serviceUuids: [
"000008F0-0000-1000-8000-00805F9B34FB",
"00000810-0000-1000-8000-00805F9B34FB",
"00009D13-0000-1000-8000-00805F9B34FB",
"0000950E-0000-1000-8000-00805F9B34FB",
"00004E2D-0000-1000-8000-00805F9B34FB",
"000041F0-0000-1000-8000-00805F9B34FB",
"00001DE1-0000-1000-8000-00805F9B34FB",
"00007EB9-0000-1000-8000-00805F9B34FB",
"0000F59C-0000-1000-8000-00805F9B34FB",
"00002D98-0000-1000-8000-00805F9B34FB",
"0000343D-0000-1000-8000-00805F9B34FB",
"00002B0B-0000-1000-8000-00805F9B34FB",
"00002D89-0000-1000-8000-00805F9B34FB"
],
manufactureData: [],
serviceData: [],
// includeDeviceName: false,// 表示是否携带设备名,可选参数。注意:带上设备名时,容易导致广播报文长度超出31个字节,使得广播启动失败
};
// let advResponse: ble.AdvertiseData = {
// serviceUuids: [],
// manufactureData: [],
// serviceData: [serviceDataUnit1, serviceDataUnit2]
// };
// 2.3 构造广播启动完整参数AdvertisingParams
let advertisingParams: ble.AdvertisingParams = {
advertisingSettings: setting,
advertisingData: advData, // 注意: 广播报文长度不能超过31个字节
// advertisingResponse: advData, // 注意: 广播报文长度不能超过31个字节
duration: 0 // 可选参数,若参数大于0,则广播发送一段时间后会停止,但分配的广播资源还在,可重新启动发送
}
// 2.4 首次启动广播,蓝牙子系统会分配相关资源,包括应用获取到的广播标识ID
try {
ble.on('advertisingStateChange', this.onReceiveEvent);
this.advHandle = await ble.startAdvertising(advertisingParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 3. 停止指定标识的广播,即首次启动时分配的标识,停止后,该路广播资源仍然存在
public async disableAdvertising() {
// 3.1 构造停止广播参数
let advertisingDisableParams: ble.AdvertisingDisableParams = {
advertisingId: this.advHandle // 使用首次启动广播时获取到的广播标识ID
}
try {
// 3.2 停止
await ble.disableAdvertising(advertisingDisableParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 4. 启动指定标识的广播,即首次启动时分配的标识
public async enableAdvertising(enableDuration: number) {
// 4.1 构造启动广播参数
let advertisingEnableParams: ble.AdvertisingEnableParams = {
advertisingId: this.advHandle, // 使用首次启动广播时获取到的广播标识ID
duration: enableDuration
}
try {
// 4.2 再次启动
await ble.enableAdvertising(advertisingEnableParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 5. 完全停止广播,释放广播资源
public async stopAdvertising() {
try {
await ble.stopAdvertising(this.advHandle);
ble.off('advertisingStateChange', this.onReceiveEvent);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
}
let bleAdvertisingManager = new BleAdvertisingManager();
export default bleAdvertisingManager as BleAdvertisingManager;