2015-09-23 11 views
6

Dove sono le differenze tra CBUUID e l'oggetto NSUUID?Differenze tra CBUUID e NSUUID in swift

Ho visto riempire scanForPeripheralsWithServices con entrambi gli oggetti in casi diversi ... Apple si aspetta un oggetto CBUUID quindi preferirei usare questo tipo o?

mio esempio:

let MY_SERVICE_UUID = CBUUID(string: "hdl83h6sd-gl95-bn4f-37gd-jd73hd0tn8za") func scanForPeripheralsWithServices(serviceUUIDs: MY_SERVICE_UUID,nil)

+0

L'esempio di cbuuid non è valido - deve essere composto da numeri esadecimali 0-9 a-f – Paulw11

+0

Mi dispiace per quello! hai completamente ragione. – godlyblade

risposta

11

Un NSUUID è un numero a 128 bit che viene utilizzato per identificare in modo univoco gli oggetti, i tipi e altri oggetti. È possibile accedervi come byte o viene comunemente utilizzato in una stringa: 68753A44-4D6F-1226-9C60-0050E4C00067. La classe include metodi per la creazione di UUID casuali e istanze inizializzate con un valore specializzato.

Bluetooth utilizza anche identificatori a 128 bit per caratteristiche e servizi. Il Bluetooth SIG ha definito molti servizi e caratteristiche "ben noti". Questi sono rappresentati come un valore a 16 bit che viene combinato con l'UUID di base Bluetooth per ottenere il valore completo a 128 bit.

I metodi CBUUID sono a conoscenza di questi valori noti e possono trasformare automaticamente i valori a 16 bit in equivalenti a 128 bit. Un CBUUID può anche essere inizializzato con un valore di 128 bit se non si utilizzano valori ben noti (cioè i propri servizi e caratteristiche privati)

Ad esempio, l'inizializzazione di un CBUUID con CBUUID(string:"180F") è ok (questa è la batteria servizio) ma NSUUID(string:"180F") non riuscirebbe perché ha bisogno di tutti i 128 bit.

Quando si lavora con Core Bluetooth, si utilizzerà CBUUID per servizi e caratteristiche. Un NSUUID viene utilizzato per l'identificativo periferico poiché è solo un MAC senza valori speciali definiti.

+0

Ok, quindi se utilizzo una struttura personalizzata di servizi e caratteristiche con UUID creati gratuitamente dovrei usare un numero NSUUID o? perché in questo caso non devo convertire un UUID a 16 bit in un UUID a 128 bit. Ma in questo caso devo preoccuparmi del tipo di input previsto per il metodo di scansione? Grazie! – godlyblade

+0

No, dovresti usare CBUUID. Gli inizializzatori CBUUID gestiranno un valore a 16 bit o 128 bit. Scoprirai che tutte le funzioni Bluetooth principali ora usano CBUUID. C'è un inizializzatore per CBUUID che accetta un NSUUID se ne hai uno. – Paulw11

+0

Che bello, grazie! – godlyblade