2013-10-09 6 views
5

मैं यूयूआईडी बनाना चाहता हूं, मेरे पास नीचे कोड है जो यूयूआईडी बना सकता है, मैं आईओएस 7 में एकाधिक विक्रेताओं के साथ यूडीआईडी ​​कैसे बना सकता हूं?आईओएस में यूयूआईडी और यूडीआईडी ​​बनाना 7

+ (NSString*) stringWithNewUUID 
{ 
    CFUUIDRef uuidObj = CFUUIDCreate(nil); 
    NSString *newUUID = (NSString*)CFUUIDCreateString(nil, uuidObj); 
    CFRelease(uuidObj); 
    return newUUID; 
} 
+0

क्या आप हमें बता सकते हैं कि आप ऐसा क्यों करना चाहते हैं? –

+0

मेरे पास कुछ व्यावसायिक आवश्यकता है –

+0

@ संदीपखेड आप क्यों कहते हैं कि इसमें टाइमस्टैम्प है? [CFUUID दस्तावेज़] (https://developer.apple.com/library/mac/documentation/corefoundation/Reference/CFUUIDRef/Reference/reference.html#//apple_ref/c/func/CFUUIDCreate) टाइमस्टैम्प के बारे में कुछ भी उल्लेख नहीं करता है। – Amar

उत्तर

4

ऊपर मैं एक विक्रेता ID बनाई और फिर कीचेन के साथ इसे बचाया है यादृच्छिक UUID रिटर्न जो मुझे लगता है मैं संदीप पीछा KeychainWrapper keychainStringFromMatchingIdentifier:...

+0

क्या ऐप्पल ने इस विधि को स्वीकार किया? –

+0

हाँ, आप एप्लिकेशन हटाए जाने से परे पिछले और पुनर्स्थापित करने के लिए नए UUID की जरूरत है, तो मूल्य आईओएस के-चेन में बजाय संग्रहित किया जा सकता –

2

यूयूआईडी जो उपरोक्त उत्पाद उत्पन्न करता है उसमें एक पुनर्प्राप्ति योग्य समय टिकट नहीं है। यह सिर्फ एक स्ट्रिंग है जो इस तरह कुछ दिखता है: E1D87006-7CD0-4E28-9768-624DA92F75D6

+0

हाँ @claireware यह स्ट्रिंग –

6

CFUUIDCreate फ़ंक्शन एक संस्करण 4 यूयूआईडी उत्पन्न करता है जो पूरी तरह से छद्म-यादृच्छिक संख्या जेनरेटर से लिया जाता है। इस प्रकार के यूयूआईडी में एम्बेडेड कोई टाइमस्टैम्प या मैक पते नहीं हैं। (यह छोटे-प्रयोग किए गए संस्करण 1 स्वाद को संदर्भित करता है।) ये लगभग सभी अनुप्रयोगों के लिए उपयोग करने के लिए सुरक्षित हैं।

+1

हाँ के रूप में है, https://www.opensource.apple.com/source/CF/CF-744/CFUUID.c तकनीकी तौर पर, CFUUIDCreate() संस्करण 1 UUIDs बना सकते हैं देखते हैं, लेकिन डिफ़ॉल्ट संस्करण 4 – iccir

+1

धन्यवाद मैं विक्रेता ID –

5

इस विधि, iOS 6 में और

[[UIDevice currentDevice]identifierForVendor] 
+0

धन्यवाद अरुण के लिए नहीं डिवाइस के लिए UDID बनाने के लिए देख रहा था (बस iOS 7 और ओएस एक्स 10.8 पर परीक्षण) है, मैं यही नहीं है विक्रेता –

+1

के लिए नहीं मेरी डिवाइस के लिए अद्वितीय पहचानकर्ता बनाने के लिए देख रहा हूँ इसका क्या मतलब है। -identifierForVendor आईडी जो एक ही डेवलपर से ऐप्स के बीच समान है। –

+1

@ क्रॉसफायर डेवलपमेंट: विक्रेता के बावजूद 'पहचानकर्ता फॉरवेंडर' विधि अलग-अलग उपकरणों में अलग-अलग मान देता है। एप्पल प्रलेखन: "इस संपत्ति का मूल्य है कि एक ही डिवाइस पर चल रहा एक ही विक्रेता द्वारा की क्षुधा के लिए ही है एक अलग मूल्य है कि विभिन्न विक्रेताओं से आते हैं एक ही डिवाइस पर क्षुधा के लिए परवाह किए बिना लौट आए, और विभिन्न उपकरणों पर क्षुधा के लिए किया जाता है। विक्रेता का। " – Armin

0

का उपयोग कर अगली बार के लिए बनाए रखने कर रहा हूँ खाडे का जवाब और PDKeychainBindings का उपयोग कर निम्नलिखित कोड बनाया। यह NSUserDefaults का उपयोग करने जैसा ही है लेकिन यह कीचेन में पहचानकर्ता रखता है जो एप्लिकेशन को हटाए जाने पर भी डेटा सहेजता है।

+ (NSString *)uniqueVendor { 

    PDKeychainBindings *keychain = [PDKeychainBindings sharedKeychainBindings]; 
    NSString *uniqueIdentifier = [keychain objectForKey:kKeyVendor]; 

    if (!uniqueIdentifier || !uniqueIdentifier.length) { 

     NSUUID *udid = [[UIDevice currentDevice] identifierForVendor]; 
     uniqueIdentifier = [udid UUIDString]; 
     [keychain setObject:uniqueIdentifier forKey:kKeyVendor]; 
    } 

    return uniqueIdentifier; 
}