2015-12-30 13 views
5

Quindi ho periferica BLE dispositivo e ho bisogno di qualche identificatore per poterlo condividere in seguito con un altro iPhone. Esempio: mi connetto con iPhone "A" alla periferica. iPhone 'A' salva l'identificativo della periferica nel database e successivamente posso facilmente prendere iPhone 'B' e connettersi alla periferica trovata dall'identificatore.Identificatore univoco per periferica BLE

Ora c'è UUID quali modifiche per ogni connessione iPhone-peripheral, ma MAC Address non è disponibile. Cosa potresti suggerire?

+0

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. –

+0

Usi EAAccessoryManager per trovare la periferica? Se controlli tutte le proprietà di EAAccessory se puoi lavorare con uno di questi. (modelNumber, serialNumber, name ....) – LoVo

+0

a meno che la periferica non fornisca una sorta di identificatore univoco tramite un attributo GATT, non penso ci sia alcuna soluzione – Paulw11

risposta

0

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?

0

Se non si fabbrica la periferica da soli, non è possibile identificare in modo univoco le periferiche tra diversi dispositivi iOS. Questo è esattamente ciò che Apple vuole che sia, dal momento che significa che gli sviluppatori non possono tracciare le posizioni dell'utente o i modelli di movimento in base agli indirizzi dei dispositivi. Sarebbe un problema di privacy.

Se produci la periferica da solo, puoi fare praticamente quello che vuoi. Ad esempio: utilizzare un servizio personalizzato uuid, aggiungere uuid ai dati del produttore nella pubblicità, impostare nomi di annunci unici, ecc. Ecc. Ma se lo scopo principale di tutto questo è tracciare il tuo utente, suppongo che Apple possa negare la tua richiesta.

Problemi correlati