web-dev-qa-db-fra.com

Remplacement UDID dans IOS7

Existe-t-il une alternative à UDID? Mon application n'ira pas sur l'App Store car j'utilise la distribution d'entreprise. Donc, y a-t-il un remplacement? J'ai lié l'identifiant publicitaire, l'Udid ouvert, l'UIID et le UDID sécurisé. Mais si le téléphone est réinitialisé, j'obtiendrai un nouvel UDID. Toute aide serait appréciée. 

14
Avinash

Après avoir essayé tous les remplacements possibles. L'identifiant publicitaire est la meilleure solution. Il reste identique même après la réinitialisation du téléphone lorsque j'ai testé. Si l'utilisateur le désactive dans les paramètres, nous obtenons une valeur nulle. À part cet accroc, c'est le meilleur remplacement jusqu'à présent. Mettra à jour si je trouve d'autres meilleurs remplaçants. 

3
Avinash

Pour les versions supérieures à 6.0, vous pouvez utiliser identifierForVendor ou CFUUIDRef.

-(NSString*)uniqID
{
    NSString* uniqueIdentifier = nil;
    if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) {
        // iOS 6+
        uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else {
        // before iOS 6, so just generate an identifier and store it
        uniqueIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"identifierForVendor"];
        if( !uniqueIdentifier ) {
            CFUUIDRef uuid = CFUUIDCreate(NULL);
            uniqueIdentifier = ( NSString*)CFUUIDCreateString(NULL, uuid);
            CFRelease(uuid);
            [[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"identifierForVendor"];
        }
    }
return uniqueIdentifier;
}//

METTRE À JOUR

Comme le commentaire Leon Lucardie il a raison 

identifierForVendor changera après la désinstallation/la réinstallation de l'application. Voir ici 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 le périphérique iOS. La valeur change lorsque l’utilisateur supprime toutes les applications de ce fournisseur de l’appareil, puis en réinstalle une ou plusieurs.

16
Nitin Gohel

Vous devez créer un identifiant fournisseur, puis l'enregistrer à l'aide d'un trousseau et le récupérer une fois que vous avez réinitialisé votre téléphone à l'aide de la date et l'heure

vérifiez ce lien UUID et UDID pour iOS7

3
Sandeep Khade

Facile, utilisez simplement ce code:

-(NSString *)getUID{
    if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
    // This is will run if it is iOS6 and above
        return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else {
    // This is will run before iOS6 and you can use openUDID or other
    // method to generate an identifier
        return [OpenUDID value];  
    }  
}

Comme vous pouvez le comprendre, si vous envisagez de prendre en charge iOS 5, vous devez utiliser OpenUDID (Apple restreint la lecture de l’UDID même sur iOS 5). Avec quelques réponses ici, vous seriez simplement rejeté par Apple (mon code a été approuvé dans plusieurs de mes applications).

Faites attention à ce que identifierForVendor changera si votre utilisateur supprime l'application (ou toutes les applications du fournisseur s'il en existe plusieurs) et se réinstalle. 

2
Idan

J'utilise la combinaison jeton APNS et vendorId. Les deux sont vérifiés pour vérifier l'identité du téléphone portable et je les mets à jour en conséquence dans le téléphone portable et le serveur lorsque l'un de ceux-ci change.

Il est toujours possible que les deux changent, lorsque l'application est désinstallée et/ou réinitialisée et stockée pendant quelques mois, les deux valeurs changent.

Cela fera en sorte que la prochaine fois que le téléphone portable aura installé l'application, elle sera identifiée comme une nouvelle.

En plus de cela, j'exécute un processus sur le serveur qui marque comme supprimé tout périphérique qui ne s'était pas connecté au serveur depuis deux mois.

Dans ce cas, l'authentification de l'utilisateur est requise et le téléphone portable est ajouté à nouveau au groupe de périphériques du client.

Je n'ai encore qu'une application, mais une fois que j'ai la seconde, je pourrais inclure advertisingId.

1
Haac74

Ces articles de blog par Ole devraient être utiles:

iOS 5: http://oleb.net/blog/2011/09/how-to-replace-the-udid/ iOS 6+: http://oleb.net/blog/ 2012/09/udid-apis-in-ios-6/

0
Berk

Vous pouvez utiliser après iOS 6+ avec la version 2.2 de Swift.

var uniqueIdentifier: NSString!
uniqueIdentifier = UIDevice.currentDevice().identifierForVendor?.UUIDString
0
shahnilay86