2014-06-30 26 views
5

C'è un modo per determinare a livello di programmazione se le impostazioni di privacy dell'utente sono state ripristinate? Via Settings > General > Reset > Reset Location & PrivacyDetermina se le impostazioni di privacy dell'utente sono state reimpostate

Attualmente sto lavorando su un quadro per rendere più facile chiedere il permesso dell'utente e fornire più contesto: ISHPermissionKit

In alcuni casi (ad esempio, quando si ripone "Non mi chiedere di nuovo") sarebbe bene se potessi anche ripristinare lo stato interno del framework delle autorizzazioni se il sistema si ripristina.

Un modo sarebbe ovviamente quello di verificare se uno stato precedentemente concesso/negato è ora indeterminato (ad esempio posizione). Ciò tuttavia richiede il controllo di una moltitudine di permessi e non è possibile per tutte le categorie di permessi.

Ho controllato sia [[ASIdentifierManager sharedManager] advertisingIdentifier] sia [[UIDevice currentDevice] identifierForVendor] entrambi rimangono invariati quando si ripristina la privacy.

risposta

0

Siamo spiacenti ma questo non può essere fatto. Non c'è una chiamata delegata che lo faccia. Il modo migliore è quello di verificare il

applicationDidBecomeActive:

+0

Come ti verificare che se non si memorizza se l'utente in precedenza ha fatto un scelta? – FelixLam

+0

Dovresti memorizzarlo. Ad esempio, quando l'utente consente le notifiche push è possibile eseguire: tipi UIRemoteNotificationType = [[Applicazione condivisa UIA] enabledRemoteNotificationTypes]; e memorizza i tipi. Quindi in applicationDidBecomeActive: puoi verificare se è cambiato. Puoi fare lo stesso con la rubrica e la posizione. – penguinmaster

+0

Sono consapevole di questa tecnica/strategia, tuttavia la domanda cerca in particolare modi che funzionano senza controllare le autorizzazioni o memorizzare decisioni precedenti. – FelixLam

0
[[NSNotificationCenter defaultCenter]addObserver:self 
     selector:@selector(privacyWasReset:) 
      name:NSUserDefaultsDidChangeNotification 
     object:nil]; 



[[NSNotificationCenter defaultCenter] removeObserver:self name:NSUserDefaultsDidChangeNotification object:nil]; 
to ->appDidBecomeActive method and also 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(privacyWasReset) name:NSUserDefaultsDidChangeNotification object:nil]; 
to-> applicationDidEnterBackground method. 

Questo è potrebbe aiutare voi ..

+0

Viene chiamato dopo il riavvio dell'app se le impostazioni sono state ripristinate mentre l'app non era in esecuzione? Dai documenti sembra che venga chiamato solo quando si cambiano i valori effettivi di 'NSUserDefaults'. – FelixLam

+0

https://developer.apple.com/library/ios/samplecode/AppPrefs/Introduction/Intro.html –

+0

I commenti in quel progetto sembrano implicare che questo si riferisce solo alle impostazioni e non alle autorizzazioni. – FelixLam