如何编辑广告数据?

时间:2016-08-22 10:39:08

标签: ios bluetooth-lowenergy core-bluetooth

我需要从中央管理员那里编辑蓝牙外围设备的广告数据。

我试了很多..

以下代码提供了详细信息:

1.外设连接后:

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {

    NSLog(@"Connection successfull to peripheral: %@",peripheral);
    peripheral.delegate = self;
    [peripheral discoverServices:nil];
    //Do somenthing after successfull connection.
}

2.发现服务:

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {

    for (CBService *service in peripheral.services) {
        NSLog(@"Discovering characteristics for service %@", service);
        [peripheral discoverCharacteristics:nil forService:service];
    }

}

3.从服务中发现特征:

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

    for (CBCharacteristic *characteristic in service.characteristics) {
        if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"B0702880-A295-A8AB-F734-031A98A512DE"]]) {
            [peripheral readValueForCharacteristic:characteristic];
            NSLog(@"Reading value for characteristic %@", characteristic);
            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
        }
    }
}

4.更新通知状态:

- (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {


    NSLog(@"characteristic.properties--------------------->%lu",(unsigned long)characteristic.properties);


    if (error) {
        NSLog(@"Error changing notification state: %@",[error localizedDescription]);
    }
    // Notification has started
    if (characteristic.isNotifying) {
        NSLog(@"Notification began on %@", characteristic);
    }

    NSString* decodeString = @"teststring";
    NSData *encodeData = [decodeString dataUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"to write----- %@",encodeData);


    if ((characteristic.properties & CBCharacteristicPropertyWrite) ||
        (characteristic.properties & CBCharacteristicPropertyWriteWithoutResponse))
    {
        [peripheral writeValue:encodeData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
    }
    else
    {
        NSLog(@"Not permit to write");
    }
}

5.更新Peripheral中的写入值:

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {

    if (error) {
        NSLog(@"Error writing characteristic value: %@",[error localizedDescription]);
    }

    NSData *data = characteristic.value;
    NSLog(@"FinalData:%@",data);
}

我不熟悉IOS.Helps表示赞赏

提前感谢..

1 个答案:

答案 0 :(得分:1)

没有从中央设置外围设备上的广告数据的一般方法。如果你想做这样的事情,你必须在外围设备上实现这个功能(通过专门的GATT服务),或者产品以某种方式提供此功能。

另请注意,广告是一种链接层(LL)功能,通常不会通过iOS公开。 BLE的iOS API是GAP / GATT级别。