it-swarm.com.de

So generieren Sie eine eindeutige Geräte-ID für iPhone/iPad mit Objective-c

Ich wollte wissen, dass wie man mit Objective-c eine eindeutige ID des Geräts für iPhone/iPad generiert  

sobald die Anwendung auf dem Gerät installiert ist, sollten wir diese Geräte-ID verfolgen

  • Ich habe gesucht, um die IMEI von iPhone/iPad abzurufen, aber es ist in object-c nicht zulässig.

  • Dann habe ich nach einer UDID des iPhone/iPad gesucht, die jedoch bei jedem Start auf dem Simulator für eine andere ID generiert wird.

6
Poonam K.

Ja, UDID ist veraltet. Wir dürfen aus Gründen des Datenschutzes keine UDID erhalten. Apple erlaubt nicht, Kennungen zu erhalten, die ein Gerät eindeutig identifizieren, wie IMEI, MAC-Adresse, UDID usw.

UUID ist ab sofort der beste Weg. Das wäre aber für jeden Anbieter einzigartig. Sie können nicht sicher sein, dass es jedes Mal eindeutig ist, wenn Sie die Zeichenfolge UUID erhalten. Am besten speichern Sie die Zeichenfolge UUID in Keychain des Telefons [] und rufen sie bei Bedarf mit einem Haken ab. Wenn Sie Ihr Telefon auf die Werkseinstellungen zurücksetzen, werden die Schlüsselbundelemente gelöscht. Diese Einschränkung sollte beachtet werden.


UPDATE - IN IOS 10.3 BETA'S:

Es scheint, dass Apple einige Änderungen an der Funktionsweise von Keychain in iOS 10.3+ vorgenommen hat. Schlüsselbundelemente, die im Schlüsselbund gespeichert sind, werden gelöscht, wenn alle Apps des jeweiligen Anbieters deinstalliert werden. Laut Apple kann der Verbleib sensibler Informationen einer App, selbst nachdem die App vom Gerät entfernt wurde, zu Sicherheitsrisiken führen, weshalb sie beschlossen haben, dieses Verhalten zu verbieten.

Entwickler, die auf Keychain-Speicher auch nach einer Deinstallation ihrer Apps angewiesen sind, können diese WORKAROUND verwenden, um mit der beabsichtigten Funktionalität fortzufahren. Gemäß dieser Problemumgehung kann jede App auf die Informationen zugreifen, die in dieser bestimmten Keychain-Zugriffsgruppe gespeichert sind. Es wird daher empfohlen, eine zusätzliche Verschlüsselungsebene zu Ihren Daten hinzuzufügen, um sie noch sicherer zu machen, obwohl der Schlüsselbund standardmäßig Elemente verschlüsselt.


UPDATE - IOS 10.3.3 (STABLE): Es scheint, dass die Löschung der Schlüsselbundelemente in den frühen Betas von iOS 10.3.3 ein Fehler war und später in der stabilen Version behoben wurde . Dies könnte während Betas verursacht worden sein, da in dieser Phase seltsame Dinge passieren können. Es sollte kein Problem sein, Keychain später zu verwenden.

13
Badhan Ganesh

Sie können UUID (Universal User Identification) verwenden. Der folgende Link enthält Apple-Dokumentation 

https://developer.Apple.com/reference/uikit/uidevice/1620059-identifierforvendor

https://developer.Apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html#//Apple_ref/doc/uid/TP40013162-SW1

sie können diesen Code für die UUID verwenden: 

//Ziel c

NSString * string =  [[[UIDevice currentDevice] identifierForVendor] UUIDString];

//Schnell

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

// Swift 3

let deviceID = UIDevice.current.identifierForVendor?.uuidString
7

Verwenden Sie den folgenden Code, um die UDID für iOS-Geräte abzurufen. __ Verwenden Sie den KeychainItemWrapper-Klassendownload von der URL KeychainItemWrap .

NSString *uuid;
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"AC_APP_UUID" accessGroup:nil];
NSString *keychainUUID = [keychain objectForKey:(__bridge id)(kSecAttrAccount)];
NSString *appVersion = [NSString stringWithFormat:@"%@",@"1.0"];
[keychain setObject:appVersion forKey:(__bridge id)(kSecAttrDescription)];
if (keychainUUID==nil||[keychainUUID isKindOfClass:[NSNull class]]||keychainUUID.length==0) {
    uuid = [[NSUUID UUID] UUIDString];
    [keychain setObject:uuid forKey:(__bridge id)(kSecAttrAccount)];
}else{
    uuid = [keychain objectForKey:(__bridge id)(kSecAttrAccount)];
}
5
SM18

Wer nach 2017 hierher kommt, hat für diesen Zweck DeviceCheck implementiert. 

https://developer.Apple.com/documentation/devicecheck#overview

Mit DeviceCheck können Sie feststellen, ob dieses bestimmte Gerät Ihre bestimmte App installiert oder verwendet hat. Sie erhalten keine eindeutige ID für das Telefon, aber Sie können feststellen, ob ein Nutzer eine Werbeaktion durchgebrannt hat oder nicht.

0
nelsonenzo