Es gibt einen Artikel darüber, wie Sie sicherstellen können, dass Sie diese generierte UUID auch für iOS 5 und höher mit KeyChain nie verlieren. blog.onliquid.com/…
jasoares
Antworten:
323
[[UIDevice currentDevice] uniqueIdentifier]
Gibt die eindeutige ID Ihres iPhones zurück.
BEARBEITEN: -[UIDevice uniqueIdentifier]ist jetzt veraltet und Apps werden aus dem App Store für die Verwendung abgelehnt. Die folgende Methode ist nun der bevorzugte Ansatz.
Wenn Sie mehrere UUIDs erstellen müssen, verwenden Sie einfach diese Methode (mit ARC):
[[UIDevice currentDevice] uniqueIdentifier] ist ab iOS 5 veraltet, und Apple lehnt jetzt Apps ab, die es verwenden (Stand März 2012). Der Rest der Antwort ist immer noch korrekt.
Gorm
13
Nachdem ich mich eine Weile mit dieser Frage befasst habe, bin ich mir ziemlich sicher, dass es bei der ursprünglichen Frage nicht um die eindeutige Kennung des Geräts ging, sondern nur darum, eine nützliche allgemeine eindeutige Kennung für etwas zu erhalten.
Ryan McCuaig
12
Um diese ARC-Kompatibilität zu gewährleisten, müssen Sie das Zeichenfolgenobjekt umwandeln und den Autorelease-Aufruf entfernen. Mit anderen Worten, fügen Sie die Besetzung hinzu: NSString * string = (__bridge_transfer NSString *) CFUUIDCreateString (NULL, theUUID);
Paul de Lange
65
Ab iOS 6 können Sie Folgendes verwenden: NSString * UUID = [[NSUUID UUID] UUIDString];
Symmetrisch
1
Wenn ich [[NSUUID UUID] UUIDString] benutze; Wird meine App in iOS7 und höher nicht von Apple abgelehnt?
Whoami
100
Hier ist der einfache Code, den ich verwende und der mit ARC kompatibel ist.
Ehrlich gesagt sollte dies die akzeptierte Antwort sein, die ursprüngliche Frage, die nach einer GUID oder einem UUID-Generator gestellt wurde, und jeder antwortete, wie man die UDID des Telefons erhält. Eine universell eindeutige Kennung (UUID) und eine eindeutige Gerätekennung (UDID) sind nicht dasselbe.
Joe
1
hier ist eine gerade Linie eins NSString * UUID = [[NSUUID UUID] UUIDString];
Dies ist bei weitem die einfachste Lösung. Wenn Sie vor iOS 6 keine Unterstützung benötigen, verwenden Sie diese Option. Ich habe mit Kerndaten generierte permanente IDs verwendet, aber das ist viel besser. +1
Sean
Perfekt, danke dafür! Dies ist meine +1 Antwort für den Tag :)
Justinhartman
Es ändert sich jedes Mal, wenn ich eine App im Simulator starte.
Gajendra K Chauhan
46
Beim Überprüfen der Apple Developer-Dokumentation stellte ich fest, dass das CFUUID- Objekt auf dem iPhone OS 2.0 und höher verfügbar ist.
Dies gibt eine eindeutige Kennung für den Prozess zurück. Es hat keine Ähnlichkeit mit einer GUID. Aus den Dokumenten: "Die ID enthält den Hostnamen, die Prozess-ID und einen Zeitstempel, der sicherstellt, dass die ID für das Netzwerk eindeutig ist"
Matt Spradley
Da könntest du recht haben. Es ist ein pragmatischer Einzeiler und wahrscheinlich nicht so kugelsicher wie CFUUID. Jeder, der die größere Genauigkeit benötigt, sollte sich an CoreFoundation wenden.
Antworten:
Gibt die eindeutige ID Ihres iPhones zurück.
Wenn Sie mehrere UUIDs erstellen müssen, verwenden Sie einfach diese Methode (mit ARC):
BEARBEITEN: 29. Januar 2014: Wenn Sie auf iOS 6 oder höher abzielen, können Sie jetzt die viel einfachere Methode verwenden:
quelle
Hier ist der einfache Code, den ich verwende und der mit ARC kompatibel ist.
quelle
In iOS 6 können Sie einfach verwenden:
Weitere Details finden Sie in den Apple-Dokumentationen
quelle
Beim Überprüfen der Apple Developer-Dokumentation stellte ich fest, dass das CFUUID- Objekt auf dem iPhone OS 2.0 und höher verfügbar ist.
quelle
In Swift :
quelle
Die einfachste Technik ist zu verwenden
NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Siehe die NSProcessInfo- Klassenreferenz.quelle
In Swift 3.0
quelle
Ich habe meine einfache, aber schnelle Implementierung einer Guid-Klasse für ObjC hier hochgeladen : obj-c GUID
Es kann auch zu und von verschiedenen Zeichenfolgenformaten analysiert werden.
quelle