web-dev-qa-db-fra.com

iOS7 - Identifiant unique de l'appareil

Notre application iOS est destinée à des utilisateurs spécifiques. Nous avons donc utilisé l'identifiant unique de l'appareil pour l'identification de l'utilisateur. Cette approche fonctionne bien jusqu'à iOS 6, car nous obtenons la même valeur à chaque fois.

NSString *strUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];

Dans iOS 7, la méthode ci-dessus réaccorde différentes valeurs et nous rencontrons des problèmes d'identification des utilisateurs. Les API iOS 7 fournissent l'alternative suivante.

NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];

J'ai remplacé "uniqueIdentifier" par "identifierForVendor" et créé une construction ad hoc. Version installée sur les appareils iOS 7 et iOS 6. Dans iOS 7, jusqu'à présent, j'obtiens la même valeur à chaque fois, mais iOS 6 donne des valeurs différentes à chaque fois, lorsque nous supprimons et réinstallons l'application.

Actuellement, l'application n'est pas disponible sur l'App Store. Je ne sais donc pas comment fonctionne cette API pour la construction de l'App Store.

Questions: 1) Pour l'application appstore, "identifierForVendor" renvoie-t-il la même valeur pour iOS 7 à chaque fois? ou cela peut changer lorsque l'utilisateur supprimera et réinstallera l'application à l'avenir? 2) Existe-t-il une autre alternative pour "identifiant unique" dans les API iOS 7, qui renvoient les mêmes valeurs pour iOS 6 et 7? 3) Toutes autres suggestions ...

23
furqan kamani

3) Toutes autres suggestions ...

Vous devez envisager des stratégies pour identifier et autoriser l'utilisateur au lieu de l'appareil. En fonction d'un identificateur spécifique à l'appareil, les utilisateurs autorisés ne peuvent pas changer d'appareil sans aucune sorte d'interaction administrateur et permettent aux utilisateurs non autorisés d'accéder s'ils trouvent/volent/empruntent un appareil autorisé. Vous pouvez éviter ces problèmes en vous basant sur les informations d'identification de l'utilisateur au lieu des identifiants d'appareil.

5
Caleb

Comme vous pouvez le voir dans la documentation ici :

La valeur de cette propriété est la même pour les applications provenant du même fournisseur et exécutées sur le même appareil. Une valeur différente est renvoyée pour les applications sur le même appareil provenant de différents fournisseurs et pour les applications sur différents appareils, quel que soit le fournisseur.

La valeur de cette propriété peut être nulle si l'application s'exécute en arrière-plan, avant que l'utilisateur n'ait déverrouillé l'appareil la première fois après le redémarrage de l'appareil. Si la valeur est nulle, attendez et récupérez-la plus tard.

La valeur de cette propriété reste la même pendant 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 en réinstalle par la suite une ou plusieurs. Par conséquent, si votre application stocke la valeur de cette propriété n'importe où, vous devez gérer avec élégance les situations dans lesquelles l'identifiant change.

En bref, l'identifiant d'un fournisseur particulier restera le même si au moins une application de ce fournisseur reste sur l'appareil. Une fois qu'il ne reste plus d'applications (ou dans le cas d'une seule application, elle est réinstallée), l'identifiant peut et va changer. Pour autant que je sache, il ne devrait pas y avoir de différence entre iOS 6 et iOS 7, donc toute différence que vous voyez est une coïncidence.

29
Dima