2011-04-08 14 views
10

मैं जिस परियोजना पर हूं, वह आईफोन या आईपैड से दो (या यहां तक ​​कि तीन) अद्वितीय पहचानकर्ताओं का अनुरोध कर रहा है। मुझे पता है, मुझे पता है ... यूडीआईडी ​​पर्याप्त होना चाहिए, लेकिन हम यह देखने की कोशिश कर रहे हैं कि क्या कोई अन्य अद्वितीय पहचानकर्ता है जिसका हम उपयोग कर सकते हैं।आईफोन/आईपैड अद्वितीय पहचानकर्ता UUID/UDID BESIDES?

मैं IOKit.framework का उपयोग कर फोन से आईएमईआई, सीरियल नंबर, मैक पता इत्यादि प्राप्त कर सकता हूं लेकिन स्पष्ट रूप से यह ऐप्पल द्वारा फंस गया है और इस ढांचे का उपयोग करके किसी भी ऐप को खारिज कर दिया जाएगा।

क्या किसी के पास कोई अन्य विचार या पहचानकर्ता है जो मुझे याद आ रही है जिसका उपयोग किया जा सकता है?

धन्यवाद!

+4

आप दो और आईडी प्राप्त करने के लिए कुछ गुप्त तरीके से यूयूआईडी को हमेशा हश कर सकते हैं :) –

+0

@ निक: मुझे नहीं लगता कि ओपी यूडीआईडी ​​का किसी भी तरह से उपयोग करना चाहता है क्योंकि यह नकली आसान है, उदाहरण के लिए एक जेलब्रोकन डिवाइस पर सिडिया से यूडीआईडीएफकर डाउनलोड करें। –

+0

ऐप्पल आईएमईआई पर फहरा हुआ है? यह अच्छा नहीं है, क्योंकि यह इतना मूल्य प्रतिबंधित करता है कि वह मान कितना अच्छा है। – KevinDTimm

उत्तर

3

आप आईसीसीआईडी ​​और आईएमएसआई (यदि वे मौजूद हैं) प्राप्त कर सकते हैं।

NSString *commcenter = @"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist"; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:commcenter]; 
NSString *ICCID = [dict valueForKey:@"ICCID"]; 
NSString *IMSI = [dict valueForKey:@"IMSI"]; 

मुझे लगता है कि जहां तक ​​आप पाएंगे। मुझे सार्वभौमिक आईडी प्राप्त करने के लिए कोई अन्य विकल्प नहीं पता है।

अद्यतन 2013-03-13: यह संभवतः बदल गया है क्योंकि मैंने लगभग दो साल पहले यह जवाब लिखा था। मुझे यह भी याद नहीं है कि इस समय आईओएस संस्करण क्या था। साथ ही @ जॉशिस ने टिप्पणियों में सही ढंग से बताया कि "आप कानूनी रूप से ऐसा नहीं कर सकते हैं, क्योंकि आपका ऐप एप्लिकेशन सैंडबॉक्स के बाहर से सामान पढ़ेगा और इसलिए, इसे ऐपस्टोर समीक्षा दिशानिर्देशों में निर्दिष्ट अनुसार अस्वीकार कर दिया जाएगा ..."।

+0

"कानूनी रूप से" क्या मतलब है? क्या इन्हें कैप्चर करने के लिए ऐप खारिज कर दिया जाएगा? – edcincy

+0

नहीं, आप कानूनी रूप से ऐसा नहीं कर सकते हैं, क्योंकि आपका ऐप एप्लिकेशन सैंडबॉक्स के बाहर से सामान पढ़ेगा और इसलिए, इसे ऐपस्टोर समीक्षा दिशानिर्देशों में निर्दिष्ट अनुसार अस्वीकार कर दिया जाएगा, 2.6: जो ऐप्स अपने नामित कंटेनर क्षेत्र के बाहर डेटा को पढ़ते या लिखते हैं, वे होंगे अस्वीकार – joshis

+0

मैं ऐसी निर्देशिका नहीं खोल सकता: "वायरलेस" /private/var/wireless/Library/Preferences/com.apple.commcenter.plist में।मैं गैर-जेलब्रोकन डिवाइस – Sergio

1

हो रही UDID पदावनत किया जा रहा है के लिए विधि, अब आप CFUUIDCreate जो मैं अधिक पहचानकर्ता प्राप्त करने के लिए करता है, तो

1

जरूरत शायद आप अपने प्रश्न को स्पष्ट करना चाहिए कई बार इस्तेमाल किया जा सकता है लगता है का उपयोग करना चाहिए।

दो (या यहां तक ​​कि तीन) iPhone या iPad

से एकमात्र पहचान का अनुरोध ... संदर्भ में एक विरोधाभास है। यदि आपका उद्देश्य किसी विशिष्ट भौतिक डिवाइस को ट्रैक करना है, तो परिभाषा के अनुसार, एक अद्वितीय पहचानकर्ता पर्याप्त है। यही अद्वितीय का अर्थ है।

शायद, आप वास्तव में क्या चाहते हैं कि डिवाइस के विरोध में प्रत्येक उपयोगकर्ता के आपके ऐप के उपयोग के बारे में कई चीजों को ट्रैक करना है। कहें कि आपका नेटवर्क गेम गेम ऐप उपयोगकर्ता 1, 2, या 3 अलग-अलग व्यक्तित्वों को अनुमति देता है। चूंकि वे उपयोगकर्ता एक विशिष्ट व्यक्तित्व बनाता है, आपको उस उपयोगकर्ता की सभी व्यक्तित्वों को अन्य सभी उपयोगकर्ता की व्यक्तित्वों में ट्रैक करना होगा।

इस तरह के उद्देश्य के लिए, UUID* उत्पन्न और भंडारण एक उचित और सामान्य समाधान है। आईओएस में यूयूआईडी मूल्य उत्पन्न करने के लिए पुस्तकालय शामिल हैं। एकमात्र पकड़ यह है कि यदि उपयोगकर्ता ऐप को हटा देता है और पुनः इंस्टॉल करता है, तो उस यूयूआईडी का भंडारण खो सकता है। इस चुनौती के लिए कामकाज हैं, जो आप उत्पन्न यूयूआईडी मानों के साथ यूडीआईडी ​​ट्रैकिंग को बदलने की चर्चा के लिए googling के बारे में जान सकते हैं।


यह प्रश्न थोड़ा पुराना है। तो मुझे जिक्र करना चाहिए: आईओएस 5 में, ऐप्पल deprecated यूडीआईडी ​​का उपयोग। 2013-05-01 तक ऐप्पल rejecting कोई ऐप है जो यूडीआईडी ​​तक पहुंचता है।


(*) यूडीआईडी ​​के साथ यूयूआईडी को भ्रमित न करें।यूयूआईडी standard 128-बिट (32 हेक्स अंक) संख्या अक्सर कई तकनीकी परिदृश्यों में लगभग अद्वितीय पहचानकर्ता के रूप में उपयोग की जाती है। यूडीआईडी ​​प्रत्येक आईओएस डिवाइस में अद्वितीय रूप से प्रत्येक डिवाइस की पहचान करने के लिए ऐप्पल की 40 हेक्स अंकों की स्ट्रिंग जला दी गई है।

7

यह सवाल पुराना है लेकिन एक नया अनूठा, विक्रेता आधारित, पहचानकर्ता अब [UIDevice identifierForVendor] अब [UIDevice uniqueIdentifier] जो अब iOS के रूप में हटा दिया गया है के बजाय इस्तेमाल किया जाना चाहिए आईओएस 6

में पदावनत UUID को बदलने के लिए जोड़ दिया गया है 5,0

उदाहरण उपयोग:

NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor]; 
NSString *uuidString = [uuid UUIDString]; 
1

एप्पल से:

इस संपत्ति में मूल्य वही रहता है जबकि ऐप (या एक ही विक्रेता से अन्य ऐप) आईओएस डिवाइस पर स्थापित है। मान बदलता है जब उपयोगकर्ता डिवाइस से उस विक्रेता के सभी ऐप्स हटा देता है और बाद में उनमें से एक या अधिक को पुनर्स्थापित करता है।

तो अगर आप [UIDevice identifierForVendor] का उपयोग करें और उपयोगकर्ता एप्लिकेशन को हटा दें और इसे पुनः स्थापित, आईडी अलग (ताकि कोई वास्तविक भौतिक युक्ति ट्रैकिंग)

तुम क्यों SecureUDID का उपयोग नहीं करते हो जाएगा?

NSString *domain = @"com.example.app"; 
NSString *key = @"mykey"; 
NSString *udid = [SecureUDID UDIDForDomain:domain usingKey:key]; 

इस तरह, यदि उपयोगकर्ता ऐप को हटा देता है और इसे पुनः स्थापित करता है, तो यूडीआईडी ​​समान होगा। यह आपको लगातार ट्रैकिंग (या जो भी आप यूडीआईडी ​​के साथ करना चाहते हैं) देगा। बीटीडब्ल्यू, उपरोक्त अभी भी ऐप्पल से अनुमति है। मज़े करो।

0

आईओएस 11 में डिवाइस चेक एपीआई अद्वितीय पहचानकर्ता प्राप्त करने का एक दिलचस्प समाधान है, इसका लाभ यह है - ऐप को अनइंस्टॉल करने के बाद भी मूल्य बनाए रखा जाएगा। इसलिए परीक्षण स्थापना जैसे मामलों का उपयोग करें और पुरस्कार डेवलपर्स द्वारा प्रभावी ढंग से नियंत्रित किया जा सकता है।

संबंधित मुद्दे