Attualmente sto implementando un'applicazione iOS che utilizza CoreBluetooth per trasferire i dati tra 2 dispositivi. Ad esempio, per inviare i dati dalla centrale al periferico, io uso questo codice:Dimensione massima dei dati durante l'invio di dati tramite BTLE su iOS
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:nil];
NSLog(@"Writing data of length %d", [data length]);
[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
Questo funziona assolutamente bene, ma la cosa è che ho letto più volte che le caratteristiche in grado di trasferire un massimo di 20 byte subito. Inoltre, quando guardo Apple's BTLE Example Code implementano un meccanismo che divide i dati in blocchi di 20 byte. Ma il codice sopra stampa qualcosa come Writing data of length 124
- i dati arrivano bene sull'altro dispositivo, però.
Quindi: Perché funziona? E ancora di più, temo che questo possa rompersi ad un certo punto, specialmente quando entrano in gioco dispositivi non iOS.
periferiche possono essere sia iOS7 o iOS6? – Rashad
@Rashad iOS 7.0 e iOS 7.1.1. E come ho detto, sono particolarmente interessato se questo si romperà con dispositivi non iOS (che devo considerare) – BlackWolf
@BlackWolf, hai trovato una risposta alla tua domanda. Non riesco a trovare un modo per controllare ATT_MTU per iPhone. In IOS 9 esiste un metodo - (NSUInteger) maximumWriteValueLengthForType: (CBCharacteristicWriteType) di tipo NS_AVAILABLE (NA, 9_0); , questo dà l'ATT_MTU.ma non so se MTU dato da questo metodo è valido per tutte le versioni di iOS. –