2013-08-16 22 views
10

Poiché Apple disapprova l'Identificatore di dispositivo unico per le app, qual è l'approccio migliore per collegare un'app Enterprise su un dispositivo che è stato registrato con MDM?Identificatori univoci per iOS MDM

Dal documento di riferimento del protocollo MDM, la registrazione sta ancora utilizzando l'UDID per la procedura di registrazione.

Non è possibile utilizzare il nuovo identificatoreForVendor perché non è lo stesso dell'UDID per il check-in.

Permettetemi di aggiornamento Come ho implementato la mia soluzione MDM,

  1. dispositivo sarà il check-in al server MDM con un UDID token e dispositivi (quello che Apple sta rimuovendo l'API)
  2. dispositivo invierà informazioni sul dispositivo al server MDM (Wifi MAC Addr, numero di serie, versione del sistema operativo e altre informazioni)
  3. Ci sarà un'app client che parlerà al server MDM tramite RESTful API. (In precedenza utilizzavo l'UDID come identificatore chiave)

Stavo pensando di utilizzare l'indirizzo MAC ma nell'ultimo iOS 7 il sistema restituirà sempre il valore 02: 00: 00: 00: 00: 00.

Inoltre, non è possibile ottenere il numero di serie del dispositivo.

Quindi, ancora una volta la mia domanda, come possiamo sapere che questa app su questo dispositivo appartiene a questa registrazione MDM sul server in (3). Perché ora, l'app non ha alcuna chiave comune da riferire con il processo di archiviazione. In che modo il server saprà quale dispositivo è quale?

Grazie.

+0

Hai trovato una soluzione al tuo problema? Il mio è praticamente lo stesso. – noircc

+0

L'unica soluzione per questo è utilizzare identifierForVendor e memorizzarlo nel Portachiavi in ​​modo che l'identificatoreForVendor rimanga anche l'utente reinstallato l'App Enterprise. – adiman

+0

Bump for answer, sto riscontrando lo stesso problema ma non ho ancora trovato una soluzione. – sm0ke21

risposta

5

Il modo migliore, e forse l'unico, è utilizzare le nuove funzionalità di configurazione delle app gestite in iOS 7. Si potrebbe fare in modo che MDM spinga verso il basso qualcosa come una chiave API per la propria app. Quindi la tua app ti fornisce quella chiave per la tua chiamata al tuo server MDM o qualsiasi altro servizio web.

Una volta trasferita la configurazione nella tua app, è possibile estrarre la chiave API con qualcosa di simile al seguente. La maggior parte delle soluzioni MDM tradizionali supportano già questo tipo di funzionalità nelle loro ultime versioni.

NSDictionary *config = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.configuration.managed"]; 
NSString *apiKey = config[@"kAPIKey"]; 

if (apiKey) { 
    //We got an API key and we can use it 
} else { 
    //We didn't get an API key...something has gone wrong 
} 
0

Avrei letto questa fonte che ho trovato qualche mese fa; http://www.doubleencore.com/2013/04/unique-identifiers/

Da lì ho utilizzato il metodo CFUUID che mi è stato utile.

NSString *uniqueID = [NSString stringWithFormat:@"%@", CFUUIDCreateString(NULL, CFUUIDCreate(NULL))];

+1

il problema è, il protocollo MDM non ha una richiesta di opzione per CFUUID nel payload. MDM invia solo UDID e altre informazioni sull'hardware. Quindi, non può correlare CFUUID con ciò che è stato inviato al server MDM. – adiman

0

In iOS 7, Apple ora restituisce sempre un valore fisso quando interrogare il MAC per contrastare specificamente MAC come base per un regime ID. Quindi ora dovresti davvero usare - [UIDevice identifierForVendor] o creare un UUID per installazione.

+0

[UIDevice identifierForVendor] non corrisponde al UDID del dispositivo tramite il carico utile MDM. Questo è il problema – adiman

+0

Anche io sto affrontando lo stesso problema nella mia app. Ci sarà anche un problema che cosa è successo quando l'utente ha aggiornato il SO nel suo dispositivo. – Developer

+0

Quindi penso che l'opzione migliore sia il token dispositivo dell'utente (se si sta utilizzando la notifica Push) nella nostra applicazione. – Developer

0

[UIDevice uniqueIdentifier] è stato sostituito con [[UIDevice identifierForVendor] UUIDString] in iOS 6.0.

2

Tuttavia s' lidsinker risposta è vero, mi permetta di concentrato su di esso in modo da alcuni altri che sono alla ricerca di questo possono essere aiutati.

È possibile creare l'app Enterprise e installarla tramite MDM. Dopo la registrazione del dispositivo, MDM può installare l'app Enterprise sul dispositivo. MDM può anche impostare la configurazione predefinita in NSUserDefault.

L'app può leggerlo ogni volta che si avvia come sopra descritto nella risposta lidsinker.

Apple fornisce un esempio qui. https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html

+0

questo approccio può garantire che l'app venga eseguita solo sui dispositivi registrati? Supponiamo che qualcuno possa estrarre l'app da un dispositivo registrato e installarla su uno non registrato - è possibile? –