iOS应用程序,从;Accu-Chek Aviva Connect;BG表。(蓝牙低能量)

iOS应用程序,从;Accu-Chek Aviva Connect;BG表。(蓝牙低能量),ios,iphone,bluetooth,bluetooth-lowenergy,core-bluetooth,Ios,Iphone,Bluetooth,Bluetooth Lowenergy,Core Bluetooth,我正在尝试创建一个iOS应用程序,它将从Accu-Chek Aviva Connect收集数据 为了与BG电表配对,我发送一个写请求以记录访问控制点特征: - (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error { if ([service.UUID isEqual:[CBUUID UUI

我正在尝试创建一个iOS应用程序,它将从Accu-Chek Aviva Connect收集数据

为了与BG电表配对,我发送一个写请求以记录访问控制点特征:

- (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {

    if ([service.UUID isEqual:[CBUUID UUIDWithString:@"1808"]]) {
        for (CBCharacteristic *aChar in service.characteristics) {

            // Read Glucose Measurement...

            // Read Glucose Measurement Context...

            // Read Glucose Feature...

            // Read Date Time...

            // Read Record Access Control Point
            if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A52"]]) {
                [aPeripheral readValueForCharacteristic:aChar];
                [aPeripheral setNotifyValue:YES forCharacteristic:aChar];

                uint8_t bytes[] = {0x04, 0x01, 0x00};
                NSData *data = [NSData dataWithBytes:(void*)&bytes length:sizeof(bytes)];

                [aPeripheral writeValue:data forCharacteristic:aChar type:CBCharacteristicWriteWithResponse];
            }

        }
    }
}
在iPhone上,我看到一个UIAlert,上面有一个输入安全代码的字段。我还可以将iPhone与Accu-Chek Aviva Connect进行配对。但下一次我发送一些写请求来记录访问控制点特征时(在设备断开连接后),我得到了“错误:身份验证不足”,并且iPhone上没有UIAlert

我觉得我做的每件事都错了


我想从蓝牙设备的日志中读取记录。AFAIU I写入字节以读取记录访问控制点(
[aperiperal writeValue:data for characteristic:aChar type:CBCharacteristicWriteWithResponse];
)并在
外围设备:didWriteValue for characteristic:error:
中获取答案。但我不能这样做,因为错误:身份验证不足“妨碍了我

您需要通过身份验证才能向BG仪表发出写入请求。身份验证不足意味着您试图在未经身份验证的情况下发出请求。你不能只是连接然后写一个与医学相关的特征


检查您是否确实发出了身份验证请求(这也需要输入PIN)。如果是,请检查PIN是否被接受或拒绝。

使用Accu-Chek Aviva Connect的方法是通过进入
设置第一次配对→ <代码>无线
→ <代码>配对→ <代码>配对设备。 然后你会看到一个屏幕,上面有数字代码和一条信息:“在设备上输入代码”

在iPhone上,您可以发现Accu-Chek设备并写入一个值来读取记录访问控制点特征。例如,请求一些记录:

- (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {

    if ([service.UUID isEqual:[CBUUID UUIDWithString:@"1808"]]) {
        for (CBCharacteristic *aChar in service.characteristics) {

            // Read Record Access Control Point
            if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A52"]]) {
                [aPeripheral readValueForCharacteristic:aChar];
                [aPeripheral setNotifyValue:YES forCharacteristic:aChar];

                self.readAccessControlPointCharacteristic = aChar;

                NSMutableData *mutableData = [NSMutableData data];
                uint8_t opCode = 0x04; // Report number of stored records
                uint8_t operator = 0x01; // All records

                [mutableData appendData:[NSData dataWithBytes:(void*)&opCode length:sizeof(opCode)]];
                [mutableData appendData:[NSData dataWithBytes:(void*)&operator length:sizeof(operator)]];

                [aPeripheral writeValue:mutableData forCharacteristic:self.readAccessControlPointCharacteristic type:CBCharacteristicWriteWithResponse];
            }

        }
    }
这将导致iPhone上出现UIAlertView,其中要求您输入显示在Accu-Chek屏幕上的代码。当您这样做时,您的iPhone将成功地与Accu-Chek Aviva Connect配对

现在。当您想从蓝牙设备读取所有记录时,您必须转到
My Data
→ <代码>数据传输→ <代码>无线→ 如果你的Accu-Chek设备有很多配对,请选择你的iPhone名称。注意:iPhone必须扫描BT设备,并自动连接到发现的设备


蓝牙连接将建立,您可以从iPhone向蓝牙设备发送任何请求,而不会出现“错误:身份验证不足”

您应该发布引发“身份验证不足”的代码。我很好奇它是来自iOS还是设备本身?另外,在哪里描述或找到了Aviva Connect API?它不容易通过谷歌搜索…Accu-Chek没有官方文档。但它使用的是官方的蓝牙服务:如果您已配对设备并输入PIN码,则该设备应显示在设置->Bluetooth.My devices中的蓝牙设备列表中。是吗?