31 votes

Identifiant unique pour une application iPhone

Pour une application iPhone qui soumet des images à un serveur, je dois en quelque sorte lier toutes les images d'un téléphone particulier. Avec chaque soumission, j'aimerais envoyer un identifiant de téléphone unique. Regardé

  [[UIDevice mainDevice] uniqueIdentifier] 
et [[NSUserDefaults standardDefaults] stringForKey: @ "SBFormattedPhoneNumber"]

mais obtenir des erreurs dans le simulateur.

Existe-t-il une manière sanctionnée par Apple de le faire?

41voto

Ben Gottlieb Points 59900

Quelles erreurs obtenez-vous? [[UIDevice currentDevice] uniqueIdentifier] ( édité pour réparer l'API, merci Martin! ) est la méthode officiellement recommandée pour ce faire.

18voto

Jason Harris Points 1948

Vous pouvez également utiliser CFUUID pour générer un UUID. Voici un code:

 NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
  uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
  [uuid autorelease];
  CFRelease(theUUID);
}
 

13voto

wisequark Points 2748

Le moyen le plus simple et le plus approprié d'obtenir un identifiant unique est de loin d'utiliser les mécanismes qu'Apple fournit explicitement pour en obtenir un - [[UIDevice currentDevice] uniqueIdentifier] . Vous ne pouvez pas garantir que le numéro de téléphone sera unique à l'appareil ou que celui-ci aura même un numéro de téléphone. Au-delà de cela, cela est une idée horrible car il s'agit d'une invasion définitive de la vie privée de l'utilisateur. Même le uniqueidentifier devrait être haché si vous voulez le stocker de quelque manière que ce soit.

8voto

Moomio Points 1406

Afin de conserver l'Identifiant Unique que vous créez entre les installations, vous pouvez utiliser le Trousseau d'accès facile avec SSKeychain: il suffit de régler votre UUID comme suit:

        [SSKeychain setPassword:@"Your UUID" forService:@"com.yourapp.yourcompany" account:@"user"];

et puis l'appeler de nouveau quand vous en avez besoin:

NSString *retrieveuuid = [SSKeychain passwordForService:@"com.yourapp.yourcompany" account:@"user"];

Remarque: Les services et les comptes doivent correspondre exactement.

Ensuite, si l'Application est supprimé et réinstallé, l'UUID va persister avec la réinstallation.

Ensuite, si vous souhaitez partager cet UUID à travers les dispositifs, configurer votre application pour utiliser iCloud. Vous pouvez ensuite stocker les UUID dans NSUserDefaults, la synchronisation avec KeyValueStore, puis définissez les UUID dans les nouveaux dispositifs de keychain avec le code ci-dessus.

Cette réponse devrait être extrêmement long si j'ai tapé le code pour tous les ci-dessus, mais beaucoup d'exemple de code ici pour tout comprendre.

7voto

gN0Me Points 217

N'oubliez pas que dans iOS 5 uniqueIdentifier sera obsolète, vous devriez utiliser CFUUID au lieu de cela

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X