2013-08-16 27 views
10

Ponieważ Apple wycofuje Unikalny identyfikator urządzenia dla aplikacji, jakie jest najlepsze podejście do łączenia aplikacji Enterprise na urządzeniu, które zostało zarejestrowane z MDM?Unikalne identyfikatory dla iOS MDM

Z dokumentu referencyjnego protokołu MDM rekrutacja nadal używa identyfikatora UDID do procedury odprawy.

Nie możemy użyć nowego identyfikatoraForVendor, ponieważ nie jest on taki sam jak identyfikator UDID dla odprawy.

Pozwól aktualizować jak I wdrożone moje rozwiązania MDM,

  1. Device zameldowania na serwerze MDM z tokena i urządzenia UDID (jeden, że Apple jest usuwanie API)
  2. Urządzenie wyśle informacje o urządzeniu na serwerze MDM (Wifi MAC Addr, numer seryjny, wersja systemu operacyjnego i inne informacje)
  3. Pojawi się aplikacja kliencka, która będzie rozmawiała z serwerem MDM za pośrednictwem RESTful API. (Poprzednio używałem identyfikatora UDID jako klucza)

Myślałem o używaniu adresu MAC, ale w najnowszym iOS 7 system zawsze zwróci wartość 02: 00: 00: 00: 00: 00.

Nie możemy również uzyskać numeru seryjnego urządzenia.

Moje pytanie brzmi: jak możemy wiedzieć, że ta aplikacja na tym urządzeniu należy do tej rejestracji MDM na serwerze (3). Ponieważ teraz aplikacja nie ma żadnego wspólnego klucza, do którego należy się zwrócić w procesie odprawy. W jaki sposób serwer wie, które urządzenie jest którym?

Dzięki.

+0

Znalazłeś rozwiązanie swojego problemu? Mój jest prawie taki sam. – noircc

+0

Jedynym rozwiązaniem tego problemu jest użycie identyfikatoraForVendor i zapisanie go w pęku kluczy, aby identyfikatorForVendor pozostał, nawet jeśli użytkownik ponownie zainstalował aplikację Enterprise. – adiman

+0

Bump dla odpowiedzi, mam ten sam problem, ale jeszcze nie znalazłem rozwiązanie. – sm0ke21

Odpowiedz

5

Najlepszym sposobem, a może jedynym sposobem, jest użycie nowych funkcji konfiguracji zarządzanych aplikacji w iOS 7. Możesz mieć swój MDM przesłać coś w rodzaju klucza API do swojej aplikacji. Następnie aplikacja wyświetla klucz do połączenia z serwerem MDM lub inną usługą sieciową.

Po przeniesieniu konfiguracji do aplikacji można wyciągnąć klucz interfejsu API podobny do poniższego. Większość głównych rozwiązań MDM obsługuje już tego typu funkcje w swoich najnowszych wersjach.

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

Chciałbym przeczytać tego źródła, które znalazłem kilka miesięcy temu; http://www.doubleencore.com/2013/04/unique-identifiers/

Stamtąd użyłem metody CFUUID, która dobrze mi służyła.

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

+1

Problem polega na tym, że protokół MDM nie zawiera żądania opcji dla CFUUID w polu danych. MDM wysyła tylko informacje o identyfikatorach UDID i innych urządzeniach. Tak więc nie można powiązać CFUUID z tym, co zostało wysłane do serwera MDM. – adiman

0

w iOS 7, Apple teraz zwraca zawsze stałą wartość, gdy odpytywanie MAC specjalnie udaremnić MAC jako podstawa do programu ID. Więc naprawdę powinieneś użyć - [Identyfikator UIDeviceForVendor] lub utworzyć UUID na instalację.

+0

[Identyfikator UIDeviceForVendor] nie pasuje do identyfikatora UDID urządzenia według ładunku MDM. To problem – adiman

+0

Mam również ten sam problem w mojej aplikacji. Pojawi się również jeden problem związany z aktualizacją systemu operacyjnego użytkownika. – Developer

+0

Więc myślę, że lepszą opcją jest to, że musimy użyć Tokenu Urządzenia (jeśli korzystasz z powiadomienia Push) w naszej aplikacji. – Developer

0

[UIDevice uniqueIdentifier] został zastąpiony przez [[UIDevice identifierForVendor] UUIDString] w iOS 6.0.

2

Jednak lidsinker „s odpowiedź jest prawdziwa, niech mi się skupić na nim tak inni, którzy szukają tego można pomóc.

Możesz utworzyć aplikację Enterprise i zainstalować ją za pomocą MDM. Po zarejestrowaniu urządzenia MDM może zainstalować aplikację Enterprise na urządzeniu. MDM może również ustawić domyślną konfigurację w NSUserDefault.

Aplikacja może ją odczytać po uruchomieniu, zgodnie z opisem podanym w , pod adresem.

Apple zapewniają przykład tutaj. https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html

+0

czy to podejście gwarantuje, że aplikacja działa tylko na zarejestrowanych urządzeniach? Załóżmy, że ktoś może wyodrębnić aplikację z zarejestrowanego urządzenia i zainstalować ją na niezarejestrowanym urządzeniu - czy to możliwe? –