248 votes

Supprimer des éléments de trousseau lorsqu'une application est désinstallée

J’utilise code iphone-scifihifi d’idandersen du trousseau et enregistrer à l’aide de mot de passe

Lorsque j’ai supprimer l’application de l’appareil, le mot de passe reste dans le trousseau.

Je veux retirer le mot de passe du trousseau lorsque l’utilisateur supprime l’application de l’appareil. Comment est-ce que je peux faire cela ?

420voto

Amro Points 1573

Vous pouvez tirer avantage du fait qu' NSUserDefaults sont compensés par la désinstallation d'une application. Par exemple:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Clear keychain on first run in case of reinstallation
    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"FirstRun"]) {
        // Delete values from keychain here
        [[NSUserDefaults standardUserDefaults] setValue:@"1strun" forKey:@"FirstRun"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    //...Other stuff that usually happens in didFinishLaunching
}

Cette recherche et définit un "FirstRun" clé/valeur en NSUserDefaults lors de la première exécution de votre application si elle n'est pas déjà défini. Il y a un commentaire où vous devez mettre le code pour supprimer les valeurs de la chaîne. Synchroniser peut être appelé à assurez-vous que le "FirstRun" clé/valeur est immédiatement persisté dans le cas où l'utilisateur tue l'application manuellement avant que le système perdure.

31voto

Shane Fitzgibbon Points 598

Il n'y a pas d'élément déclencheur pour exécuter du code lorsque l'application est supprimée de l'appareil. L'accès au trousseau est personne à charge sur le profil de configuration est utilisée pour signer la demande. Donc pas d'autres applications serait en mesure d'accéder à cette information dans le trousseau d'accès.

Il n'aide pas avec vous dans le but de supprimer le mot de passe dans le trousseau d'accès lorsque l'utilisateur supprime l'application de l'appareil, mais il devrait vous donner un peu de réconfort que le mot de passe n'est pas accessible (uniquement à partir d'une ré-installation de l'application d'origine).

8voto

stephen Points 517

Les fichiers seront supprimés à partir de votre application répertoire du document lorsque l'utilisateur désinstalle l'application. Sachant cela, tout ce que vous avez à faire est de vérifier si un fichier existe que la première chose qui arrive, en application:didFinishLaunchingWithOptions:. Par la suite, sans condition de la création du fichier (même si c'est juste un fichier fictif).

Si le fichier n'existait pas au moment de l'enregistrement, vous savez que c'est la première exécution depuis la dernière installation. Si vous avez besoin de savoir plus tard dans l'application, enregistrez le résultat booléen de votre application délégué membre de.

1voto

Remy Vanherweghem Points 2146

Comme d'autres réponses, je vous recommande d'utiliser NSUserDefaults.

À peu près tout a été dit, mais pour le bien universel de la connaissance et de la sagesse, voici une autre sur la compensation le trousseau de clés sur la première de lancement: générer une chaîne de caractères aléatoires que vous allez ajouter à votre identifiant de lot, et de le stocker dans NSUserDefaults. De cette façon, si l'utilisateur réinstalle l'application, ancien mot de passe sera toujours là, mais ne devrait pas être capté par l'app - comme le nom du service sera différent.

Mais... vraiment, juste essuyer tout premier lancement, vous devriez être bien.

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