2016-08-22 2 views
0

Ich muss die Werbedaten von Bluetooth-Peripheriegeräte von zentralen Manager bearbeiten.Wie bearbeiten Sie die Werbungsdaten?

ich viel versucht ..

Der folgende Code liefert die Details:

1.After der Peripherieanschluss:

- (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 Dienstleistungen:

- (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.Entdeckung der Eigenschaften vom Service:

- (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 Mitteilung Staat:

- (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 Schreibwert in Peripherie:

- (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); 
} 

Ich bin neu zu IOS.Helps

Dank im Voraus geschätzt werden ..

+0

Was möchten Sie mit den Werbedaten tun? Kein Code, den Sie angezeigt haben, scheint für Ihre Frage relevant zu sein. Auch die Peripherie wirbt so, wie würdest du es von der Zentrale aus verändern? – Paulw11

+0

Ich nehme an, Sie möchten die Werbung von der Zentrale in die Peripherie ändern, d. H. Die Werbedaten würden beim nächsten Mal geändert werden. Dies ist also ein einfacher Service oder Charakter wie andere Profile. Was ist deine Frage? hast du die daten auf das gerät übertragen? Hat Ihr Gerät die Daten aktualisiert? –

+0

Ich möchte die Werbungsdaten von meinem zentralen Gerät aktualisieren. Auch ich muss etwas Wert in Peripheriegerät speichern. –

Antwort

1

Es gibt keine allgemeine Möglichkeit, adv einzustellen Erarbeiten von Daten über das Peripheriegerät von der Zentrale aus. Wenn Sie so etwas machen möchten, müssen Sie entweder die Funktion auf dem Peripheriegerät implementieren (durch einen Zweck, den GATT Service gemacht hat), oder diese Funktion wird vom Produkt irgendwie angeboten.

Beachten Sie auch, dass Werbung eine Link-Layer-Funktion (LL-Funktion) ist, die normalerweise nicht von iOS bereitgestellt wird. Die iOS-APIs für BLE sind GAP/GATT-Level.

Verwandte Themen