Ho un problema simile e molti thread come this affermano che non è possibile ottenere l'indirizzo MAC da CoreBluetooth. Voglio collegarmi a una periferica BLE (intendo periferica aperta e collegabile) e memorizzare alcune informazioni su un database in modo che un iPhone diverso possa leggere lo stesso database e utilizzare le informazioni quando si connette allo stesso tipo di periferica BLE. Per il momento mi baso sul nome del dispositivo, ottenuto in questo modo:
-(void)addDiscoveredDevice:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSString * name = [peripheral name];
}
perché NSString * uuid = [[peripheral identifier] UUIDString];
mi dà risultati diversi su diversi dispositivi iOS.
Quindi, diciamo che il mio primo problema è sapere quanti Apple Watch ho vicino al mio iPhone, il secondo problema è sapere se un determinato Apple Watch (ad esempio John's Apple Watch) è vicino al mio iPhone. Sfortunatamente questo metodo non funziona perché gli utenti (ad es. John) o le aziende possono cambiare il nome delle loro periferiche.
Sì, posso contare su una combinazione di nome + servizio uuid + uuid caratteristico ma per gli stessi motivi, se il nome cambia è inutile. Qualcuno ha trovato una soluzione?
fonte
2017-08-13 12:14:02
Sì, questo è un problema che ho dovuto affrontare anche mentre lavoravo con iOS 9.0. L'identificatore utilizzato per rimanere lo stesso su tutti i dispositivi fino a iOS 8.0. Sto ancora cercando una risposta. –
Usi EAAccessoryManager per trovare la periferica? Se controlli tutte le proprietà di EAAccessory se puoi lavorare con uno di questi. (modelNumber, serialNumber, name ....) – LoVo
a meno che la periferica non fornisca una sorta di identificatore univoco tramite un attributo GATT, non penso ci sia alcuna soluzione – Paulw11