2010-09-08 15 views
37

sto giocando con il codice di idandersen scifihifi-iphone per portachiavi e mi sono imbattuto il seguente comportamento - ho impostato la password utilizzando, diconopersistono dopo la disinstallazione dell'applicazione?

[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123" 
        forServiceName:@"TestService" updateExisting:YES error:&error]; 

quindi eliminare un'applicazione di test dal dispositivo e installarlo nuovamente - la password precedentemente impostata sembra rimanere in portachiavi ...
È il comportamento previsto? E c'è un modo per assicurarti che la password che ho impostato venga cancellata con l'applicazione?

risposta

30

Sì, questo è il comportamento previsto e corretto.

Alcuni articoli portachiavi possono essere condivisi con altre app che controlli (che condividono lo stesso gruppo di accesso all'oggetto portachiavi).

Dovresti solo lasciare le informazioni da solo quando la tua app viene rimossa. Non hai richiamata o metodo per rimuovere gli elementi portachiavi sulla cancellazione della tua app.

+2

Quindi il fatto che io non desideri informazioni rimanga nel portachiavi dopo la disinstallazione dell'app potrebbe implicare che il portachiavi è semplicemente un posto sbagliato dove conservarlo, giusto? – Vladimir

+7

@Le voci di DamianMihai * possono * essere condivise tra le app, ma non sono predefinite; devi impostare i gruppi di accesso. – James

+0

È simile a come è implementato UIPasteboard.Privato ma condiviso –

1

Purtroppo, questo non è più il caso. È stato cambiato da iOS 10.3.

Questo è un cambiamento intenzionale in iOS 10.3 per proteggere la privacy degli utenti. Le informazioni che possono identificare un utente non devono essere lasciate sul dispositivo dopo che l'app che lo ha creato è stato rimosso.

Non è mai stata una parte del contratto API che gli elementi portachiavi creati da un'app sopravvivono quando l'app viene rimossa. Questo ha sempre stato un dettaglio di implementazione.

Vedere reference here.

Problemi correlati