2016-08-22 1 views
0

J'ai besoin d'éditer les données de publicité de périphérique Bluetooth à partir du gestionnaire central.Comment modifier les données de publicité?

j'ai essayé beaucoup ..

Le code suivant fournit les détails:

1.après la connexion périphérique:

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

- (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.Découverte des caractéristiques du 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 État de notification:

- (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 Valeur Write dans périphérique:

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

Je suis nouveau à IOS.Helps sont appréciés

grâce à l'avance ..

+0

Que voulez-vous faire aux données de publicité? Aucun des codes que vous avez indiqués ne semble pertinent à votre question. En outre, le périphérique annonce alors comment le changeriez-vous? – Paulw11

+0

Je suppose que vous voulez modifier la publicité du centre vers le périphérique, c'est-à-dire que les données de publicité seront modifiées la prochaine fois. C'est donc un service ou un personnage simple comme les autres profils. Maintenant, quelle est votre question? avez-vous transféré les données sur l'appareil? votre appareil a-t-il mis à jour les données? –

+0

Je veux mettre à jour les données de publicité de mon périphérique central .. Aussi, j'ai besoin de stocker de la valeur dans un périphérique. –

Répondre

1

Il n'y a pas de moyen général de réglage ertising données sur le périphérique de la centrale. Si vous voulez faire quelque chose comme ça, vous devez soit implémenter la fonctionnalité sur le périphérique (via un service GATT), soit cette fonctionnalité est proposée par le produit.

Notez également que la publicité est une fonctionnalité de couche de liaison (LL), et ceux-ci ne sont normalement pas exposés par iOS. Les API iOS pour BLE sont au niveau GAP/GATT.