Jest artykuł o tym, jak zapewnić, że nigdy nie stracisz wygenerowanego UUID, nawet dla iOS 5 i nowszych przy użyciu KeyChain. blog.onliquid.com/…
jasoares
Odpowiedzi:
323
[[UIDevice currentDevice] uniqueIdentifier]
Zwraca unikalny identyfikator telefonu iPhone.
EDYCJA: -[UIDevice uniqueIdentifier]jest już przestarzałe, a aplikacje są odrzucane z App Store za korzystanie z niej. Poniższa metoda jest teraz preferowanym podejściem.
Jeśli chcesz utworzyć kilka UUID, po prostu użyj tej metody (z ARC):
[[UIDevice currentDevice] uniqueIdentifier] został uznany za przestarzały od iOS 5, a Apple obecnie odrzuca aplikacje, które go używają (od marca 2012). Reszta odpowiedzi jest nadal dokładna.
Gorm
13
Przez pewien czas zastanawiałem się nad tym pytaniem, jestem prawie pewien, że pierwotne pytanie nie dotyczyło unikalnego identyfikatora urządzenia, ale jedynie uzyskania użytecznego ogólnego unikalnego identyfikatora czegoś.
Ryan McCuaig,
12
Aby zapewnić zgodność z ARC, musisz rzutować obiekt ciąg i usunąć wywołanie autorelease. Innymi słowy dodaj rzut: NSString * string = (__bridge_transfer NSString *) CFUUIDCreateString (NULL, theUUID);
Szczerze mówiąc, powinna to być zaakceptowana odpowiedź, pierwotne pytanie dotyczyło generatora GUID lub UUID, a wszyscy odpowiedzieli, jak uzyskać identyfikator UDID telefonu. Uniwersalny unikalny identyfikator (UUID) i unikalny identyfikator urządzenia (UDID) to nie to samo.
Joe
1
tutaj jest jedna linia prosta NSString * UUID = [[NSUUID UUID] UUIDString];
To zdecydowanie najprostsze rozwiązanie. Jeśli nie musisz obsługiwać wersji wcześniejszej niż iOS 6, użyj tego. Korzystałem z trwałych identyfikatorów generowanych z podstawowych danych, ale jest to znacznie lepsze. +1
Sean
Idealnie, dziękuję za to! To jest moja +1 odpowiedź na ten dzień :)
justinhartman
Zmienia się za każdym razem, gdy uruchamiam aplikację w symulatorze.
Gajendra K Chauhan
46
Przeglądając dokumentację Apple Developer, znalazłem obiekt CFUUID dostępny w systemie iPhone OS 2.0 i nowszych.
Zwraca unikalny identyfikator procesu. Nie ma podobieństwa do GUID. Z dokumentacji: „Identyfikator zawiera nazwę hosta, identyfikator procesu i znacznik czasu, co zapewnia, że identyfikator jest unikalny dla sieci”
Matt Spradley
Możesz mieć racje. Jest to pragmatyczny jeden liniowiec i prawdopodobnie nie jest tak kuloodporny jak CFUUID. Każdy, kto potrzebuje większej dyscypliny, powinien przejść do CoreFoundation.
Odpowiedzi:
Zwraca unikalny identyfikator telefonu iPhone.
Jeśli chcesz utworzyć kilka UUID, po prostu użyj tej metody (z ARC):
EDYCJA: 29 stycznia 2014: Jeśli celujesz w iOS 6 lub nowszy, możesz teraz użyć znacznie prostszej metody:
źródło
Oto prosty kod, którego używam, zgodny z ARC.
źródło
W iOS 6 możesz łatwo używać:
Więcej szczegółów w dokumentacji Apple
źródło
Przeglądając dokumentację Apple Developer, znalazłem obiekt CFUUID dostępny w systemie iPhone OS 2.0 i nowszych.
źródło
W Swift :
źródło
Najprostszą techniką jest użycie
NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Zobacz odwołanie do klasy NSProcessInfo .źródło
W Swift 3.0
źródło
Przesłałem tutaj moją prostą, ale szybką implementację klasy Guid dla ObjC: GUID obj-c
Może parsować do iz różnych formatów łańcuchów.
źródło