Vous pouvez utiliser ceci (Swift 3):
UIDevice.current.identifierForVendor!.uuidString
Pour les anciennes versions:
UIDevice.currentDevice().identifierForVendor
ou si vous voulez une chaîne:
UIDevice.currentDevice().identifierForVendor!.UUIDString
Il n'y a plus de moyen d'identifier de manière unique un appareil après que l'utilisateur a désinstallé les applications. La documentation dit:
La valeur de cette propriété reste la même tant que l'application (ou une autre application du même fournisseur) est installée sur l'appareil iOS. La valeur change lorsque l'utilisateur supprime toutes les applications de ce fournisseur de l'appareil et réinstalle ensuite une ou plusieurs d'entre elles.
Vous pouvez également lire cet article de Mattt Thompson pour plus de détails:
http://nshipster.com/uuid-udid-unique-identifier/
Mise à jour pour Swift 4.1 , vous devrez utiliser:
UIDevice.current.identifierForVendor?.uuidString
Vous pouvez utiliser la propriété publique identifierForVendor présente dans la classe UIDevice
let UUIDValue = UIDevice.currentDevice().identifierForVendor!.UUIDString print("UUID: \(UUIDValue)")
MODIFIER Swift 3:
UIDevice.current.identifierForVendor!.uuidString
FIN DE LA MODIFICATION
la source
Pour le dernier code de travail de Swift 3.X , utilisation facile;
let deviceID = UIDevice.current.identifierForVendor!.uuidString print(deviceID)
la source
Vous pouvez utiliser devicecheck (dans Swift 4) Documentation Apple
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" ... } }
Utilisation typique:
Besoins d'action du serveur:
Voir WWDC 2017 - Session 702
plus de l'article de Santosh Botre - Identifiant unique pour les appareils iOS
la source
Swift 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")!)
la source
La valeur de identifierForVendor change lorsque l'utilisateur supprime toutes les applications de ce fournisseur de l'appareil, si vous souhaitez conserver l'ID unique même pour les nouvelles installations suivantes, vous pouvez essayer d'utiliser la fonction suivante
func vendorIdentifierForDevice()->String { //Get common part of Applicatoin Bundle ID, Note : getCommonPartOfApplicationBundleID is to be defined. let commonAppBundleID = getCommonPartOfApplicationBundleID() //Read from KeyChain using bunndle ID, Note : readFromKeyChain is to be defined. if let vendorID = readFromKeyChain(commonAppBundleID) { return vendorID } else { var vendorID = NSUUID().uuidString //Save to KeyChain using bunndle ID, Note : saveToKeyChain is to be defined. saveToKeyChain(commonAppBundleID, vendorID) return vendorID } }
la source
if (UIDevice.current.identifierForVendor?.uuidString) != nil { self.lblDeviceIdValue.text = UIDevice.current.identifierForVendor?.uuidString }
la source
class func uuid(completionHandler: @escaping (String) -> ()) { if let uuid = UIDevice.current.identifierForVendor?.uuidString { completionHandler(uuid) } else { // If the value is nil, wait and get the value again later. This happens, for example, after the device has been restarted but before the user has unlocked the device. // https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor?language=objc DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { uuid(completionHandler: completionHandler) } } }
la source
J'ai essayé avec
let UUID = UIDevice.currentDevice().identifierForVendor?.UUIDString
au lieu
let UUID = NSUUID().UUIDString
et il fonctionne.
la source