2016-08-22 5 views
0

Мне нужно отредактировать рекламные данные периферийного устройства bluetooth от центрального менеджера.Как отредактировать рекламные данные?

я пробовал много ..

Следующий код деталь:

1.After периферической связи:

- (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.Discovering Услуга:

- (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.Updating Извещение:

- (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.Update Написать значение 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 ценится

заранее спасибо ..

+0

Что хотите сделать с рекламными данными? Ни один из кода, который вы показали, не имеет отношения к вашему вопросу. Кроме того, периферийное устройство рекламирует так, как бы вы изменили его из центральной? – Paulw11

+0

Я предполагаю, что вы хотите изменить рекламу с центрального на периферийное, то есть в следующий раз данные рекламы будут изменены. так что это простой сервис или характер, как и другие профили. теперь в чем ваш вопрос? Вы передали данные на устройство? ваше устройство обновило данные? –

+0

Я хочу обновить данные рекламы с моего центрального устройства. Также мне нужно сохранить некоторую ценность в периферийном устройстве. –

ответ

1

Нет общего способа настройки adv ertising данные о периферии от центральной. Если вы хотите сделать что-то подобное, вам либо нужно реализовать функцию на периферии (через специально созданную службу GATT), либо эта функция предлагается каким-то образом.

Также обратите внимание, что реклама является функцией уровня ссылки (LL), и те, которые обычно не отображаются iOS. API IOS для BLE - это уровень GAP/GATT.