IOS का उपयोग करके GUID / UUID कैसे बनाएं


207

मैं iPhone और iPad पर GUID / UUID बनाने में सक्षम होना चाहता हूं।

इरादा वितरित डेटा के लिए कुंजी बनाने में सक्षम है जो सभी अद्वितीय हैं। क्या आईओएस एसडीके के साथ ऐसा करने का कोई तरीका है?


3
IOS 5 के लिए और बाद में कीचेन का उपयोग करने पर भी यह सुनिश्चित करने के बारे में एक लेख है कि आप कभी भी यूयूआईडी को उत्पन्न नहीं करते हैं। blog.onliquid.com/…
jasoares

जवाबों:


323
[[UIDevice currentDevice] uniqueIdentifier]

आपके आईफोन की यूनिक आईडी लौटाता है।

EDIT: -[UIDevice uniqueIdentifier]अब पदावनत हो गया है और ऐप स्टोर से इसका उपयोग करने के लिए ऐप्स को अस्वीकार कर दिया जा रहा है। नीचे दी गई विधि अब पसंदीदा तरीका है।

यदि आपको कई यूयूआईडी बनाने की आवश्यकता है, तो बस इस विधि का उपयोग करें (एआरसी के साथ):

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return (__bridge NSString *)string;
}

संपादित करें: जनवरी, २ ९, २०१४: यदि आप ६ या बाद में आईओएस को लक्षित कर रहे हैं, तो अब आप बहुत सरल विधि का उपयोग कर सकते हैं:

NSString *UUID = [[NSUUID UUID] UUIDString];

21
[[UIDevice currentDevice] uniqueIdentifier] को iOS 5 के रूप में चित्रित किया गया है, और Apple अब उन ऐप्स को अस्वीकार कर रहा है जो इसका उपयोग करते हैं (मार्च 2012 तक)। बाकी प्रतिक्रिया अभी भी सटीक है।
गोर्म

13
कुछ समय के लिए इस सवाल के आसपास रहा, मुझे पूरा यकीन है कि मूल सवाल डिवाइस के अद्वितीय पहचानकर्ता के बारे में नहीं था, लेकिन किसी चीज़ के लिए बस एक उपयोगी सामान्य अद्वितीय पहचानकर्ता होने के बारे में।
रयान मैककॉइग

12
इस एआरसी के अनुरूप बनाने के लिए आपको स्ट्रिंग ऑब्जेक्ट को डालना होगा और ऑटोरेलिज कॉल को हटाना होगा। दूसरे शब्दों में कलाकारों को जोड़ें: NSString * string = (__bridge_transfer NSString *) CFUUIDCreateString (NULL, theUUID);
पॉल डे लैंग

65
IOS 6 के रूप में आप उपयोग कर सकते हैं: NSString * UUID = [[NSUUID UUID] UUIDStr];
सिमिट्रिक

1
अगर मैं [[NSUUID UUID] UUIDString] का उपयोग करता हूं; iOS7 और इसके बाद के संस्करण में, क्या मेरा ऐप Apple द्वारा अस्वीकार नहीं किया जाएगा?
हूमी

100

यहां मैं सरल कोड का उपयोग कर रहा हूं, जो एआरसी के अनुरूप है।

+(NSString *)getUUID
{
    CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
    NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
    CFRelease(newUniqueId);

    return uuidString;
}

35
ईमानदारी से यह स्वीकृत उत्तर होना चाहिए, मूल सवाल एक GUID या UUID जनरेटर के लिए पूछा गया, और सभी ने फोन के UDID को प्राप्त करने के तरीके के साथ जवाब दिया। एक यूनिवर्सिटी यूनीक आइडेंटिफायर (UUID) और यूनीक डिवाइस आइडेंटिफायर (UDID) एक ही चीज नहीं हैं।
जो

1
यहाँ एक सीधी रेखा एक NSString * UUID = [[NSUUID UUID] UUIDString] है;
Adeel

89

IOS 6 में आप आसानी से उपयोग कर सकते हैं:

NSUUID  *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];

एप्पल के दस्तावेज़ों में अधिक जानकारी


5
यह अब तक का सबसे सरल उपाय है। यदि आपको iOS 6 से पहले समर्थन नहीं करना है, तो इसका उपयोग करें। मैं स्थायी आईडी जनरेट किए गए कोर डेटा का उपयोग कर रहा था, लेकिन यह बहुत बेहतर है। +1
सीन

बिल्कुल सही, इसके लिए धन्यवाद! इस दिन के लिए मेरा +1 जवाब है :)
न्यायपूर्णमैन

यह हर बार जब मैं सिम्युलेटर में ऐप चलाता हूं तो बदल जाता है।
गजेंद्र के चौहान

46

Apple डेवलपर डॉक्यूमेंट की समीक्षा करने पर मैंने पाया कि CFUUID ऑब्जेक्ट iPhone OS 2.0 और बाद में उपलब्ध है।



22

सबसे सरल तकनीक का उपयोग करना है NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]NSProcessInfo वर्ग संदर्भ देखें ।


8
इस प्रक्रिया के लिए एक विशिष्ट पहचानकर्ता देता है। यह एक GUID के समान नहीं है। डॉक्स से: "आईडी में होस्ट नाम, प्रक्रिया आईडी और एक समय टिकट शामिल है, जो यह सुनिश्चित करता है कि आईडी नेटवर्क के लिए अद्वितीय है"
मैट स्प्रेडली

आप सही हो सकते हैं। यह एक व्यावहारिक एक-लाइनर है, और शायद CFUUID के रूप में बुलेटप्रूफ नहीं है। जो भी अधिक कठोरता की जरूरत है, वह CoreFoundation को छोड़ देना चाहिए।
रयान मैककियुग


7

मैंने अपना सरल लेकिन तेज़ कार्यान्वयन ओब्जेक के लिए एक गाइड वर्ग के यहाँ अपलोड किया है: obj-c GUID

Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);

यह और साथ ही विभिन्न स्ट्रिंग प्रारूपों से पार्स कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.