2014-09-19 10 views
97

स्विफ्ट में मुझे डिवाइस अद्वितीय आईडी कैसे मिल सकता है?स्विफ्ट में एक अद्वितीय डिवाइस आईडी कैसे प्राप्त करें?

मुझे डेटाबेस में उपयोग करने के लिए एक आईडी की आवश्यकता है और मेरे सामाजिक ऐप में मेरी वेब सेवा के लिए एपीआई-कुंजी के रूप में। इस डिवाइस का ट्रैक रखने के लिए कुछ दैनिक उपयोग और डेटाबेस को अपने प्रश्नों को सीमित करें।

धन्यवाद!

UIDevice.currentDevice().identifierForVendor 

या यदि आप एक स्ट्रिंग चाहते हैं: पुराने संस्करणों के लिए

UIDevice.current.identifierForVendor!.uuidString 

:

उत्तर

236

आप इस (स्विफ्ट 3) का उपयोग कर सकते

UIDevice.currentDevice().identifierForVendor!.UUIDString 


कोई उपयोगकर्ता ने ऐप को अनइंस्टॉल करने के बाद डिवाइस को विशिष्ट रूप से पहचानने का एक तरीका लंबा। दस्तावेज़ीकरण कहता है:

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


तुम भी अधिक जानकारी के लिए मट थॉम्पसन द्वारा इस लेख को पढ़ने के लिए चाहते हो सकता है:
http://nshipster.com/uuid-udid-unique-identifier/

+0

शायद .UUIDString जोड़ दें ताकि इसे वास्तव में सर्वर पर भेजा जा सके? –

+1

यूप। मैंने सोचा कि यह करने के लिए स्पष्ट बात है, लेकिन मैंने इसे जवाब में शामिल किया। – Atomix

+6

ऐप अनइंस्टॉल करने के बाद यह नंबर अब वही नहीं है। ऐप अनइंस्टॉल करने के बाद भी डिवाइस को ट्रैक करने का कोई तरीका है? – jmcastel

4

आप UIDevice वर्ग

let UUIDValue = UIDevice.currentDevice().identifierForVendor!.UUIDString 
     print("UUID: \(UUIDValue)") 

संपादित में identifierForVendor सार्वजनिक संपत्ति वर्तमान उपयोग कर सकते हैं स्विफ्ट 3:

UIDevice.current.identifierForVendor!.uuidString 

अंत संपादित

Screenshot for property hierarchy

+2

यह पहले से ही एक उत्तर है। – User

1

स्विफ्ट 2,2

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    let userDefaults = NSUserDefaults.standardUserDefaults() 

    if userDefaults.objectForKey("ApplicationIdentifier") == nil { 
     let UUID = NSUUID().UUIDString 
     userDefaults.setObject(UUID, forKey: "ApplicationIdentifier") 
     userDefaults.synchronize() 
    } 
    return true 
} 

//Retrieve 
print(NSUserDefaults.standardUserDefaults().valueForKey("ApplicationIdentifier")!) 
-10

मैं साथ

let UUID = UIDevice.currentDevice().identifierForVendor?.UUIDString 

Instea की कोशिश की है डी

let UUID = NSUUID().UUIDString 

और यह काम करता है।

+13

NSUUID()। UUIDString आपको प्रत्येक बार – Eric

6

स्विफ्ट 3 के लिए।एक्स नवीनतम वर्किंग कोड, आसानी से उपयोग;

let deviceID = UIDevice.current.identifierForVendor!.uuidString 
    print(deviceID) 
+1

पर एक नई स्ट्रिंग देगा, यह पहले से ही स्वीकृत उत्तर में दिखाया गया है। – penatheboss

2

आप Apple documentation

func sendEphemeralToken() { 
     //check if DCDevice is available (iOS 11) 

     //get the **ephemeral** token 
     DCDevice.current.generateToken { 
     (data, error) in 
     guard let data = data else { 
      return 
     } 

     //send **ephemeral** token to server to 
     let token = data.base64EncodedString() 
     //Alamofire.request("https://myServer/deviceToken" ... 
    } 
} 

विशिष्ट उपयोग (स्विफ्ट 4 में) devicecheck उपयोग कर सकते हैं:

आमतौर पर, आप एक नया उपयोगकर्ता है कि यह सुनिश्चित करने के DeviceCheck API का उपयोग एक ही डिवाइस पर एक अलग उपयोगकर्ता नाम के तहत एक प्रस्ताव पहले से ही रिडीम नहीं किया गया है।

सर्वर कार्रवाई की जरूरत:

See WWDC 2017 — Session 702

more from Santosh Botre article - Unique Identifier for the iOS Devices

आपका उसके सर्वर एक प्रमाणीकरण कुंजी आप एप्पल से प्राप्त हो जाएगा और पर पहुंच के लिए परिणाम का उपयोग करता है के साथ इस टोकन को जोड़ती है प्रति डिवाइस बिट्स।

+0

अगर मैं इसे सही ढंग से समझता हूं, तो टोकन पीढ़ी DCDevice.generate टोकन() का उपयोग करके किया जाता है, और प्रत्येक कॉल एक अद्वितीय, यादृच्छिक डिवाइस_टोकन उत्पन्न करती है। इसलिए, device_token लगातार नहीं है, लेकिन क्षणिक है। जो मुझे समझ में नहीं आता है वह यह है कि सर्वर एक डिवाइस के साथ एक क्षणिक टोकन को कैसे जोड़ सकता है। – user1118764

+0

@ user1118764 "दो बिट सेट करें - एप्लिकेशन सर्वर इस टोकन को साझा करने और बिट मान सेट करने के लिए ज़िम्मेदार होगा।" https://medium.com/@santoshbotre01/unique-identifier-for-the-ios-devices-590bb778290d और यहां आधिकारिक दस्तावेज़ीकरण https://developer.apple.com/documentation/devicecheck/accessing_and_modifying_the_per_device_data और 702 से यहां और पढ़ें सत्र https://developer.apple.com/videos/play/wwdc2017/702/ –

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