Ho creato una configurazione personalizzata usando l'approccio standard root.plist per l'iphone. Mi chiedo se c'è un modo per determinare quando l'utente cambia quelle impostazioni nella mia app ...come determinare quando le impostazioni cambiano su ios
risposta
È possibile ascoltare per NSUSerDefaultsDidChange-notifiche con questo:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged) name:NSUserDefaultsDidChangeNotification object:nil];
Ogni volta che si cambia NSUserDefaults, viene chiamato il numero defaultsChanged
.
Non dimenticare di chiamare [[NSNotificationCenter defaultCenter] removeObserver:self];
quando si desidera interrompere l'ascolto di queste notifiche (è necessario farlo anche quando l'oggetto viene deallocato).
Registrati per ricevere le notifiche NSUserDefaultsDidChangeNotification
. Non è ovvio, ma il iOS Application Programming Guide lo descrive come ad esempio:
preferenze che l'applicazione esposti tramite le Impostazioni applicazione vengono modificate
I collegamenti sono morti .. – Marmoy
Ascolta cambiare nelle impostazioni
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod:) name:NSUserDefaultsDidChangeNotification object:nil];
Ricordarsi di rimuovere l'osservatore, una volta che questo controller della vista non è più in memoria.
La sintassi è per Swift 2. Utilizzo Swift si dovrebbe fare qualcosa di simile a iscriversi a cambiamenti per le NSUserDefaults:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "defaultsChanged:", name: NSUserDefaultsDidChangeNotification, object: nil)
Quindi creare il metodo come questo:
func defaultsChanged(notification:NSNotification){
if let defaults = notification.object as? NSUserDefaults {
//get the value for key here
}
}
Sintassi per Swift 3: 'NotificationCenter.default.addObserver (self, selector: #selector (self.defaultsChanged), nome: UserDefaults.didChangeNotification, object: nil) ' –
Un esempio accesso a un'impostazione di tipo Bool specifica dell'app con chiave "instantWeb":
func observeUserDefaults(notification: NSNotification) {
print("Settings changed")
if let defaults = notification.object as? NSUserDefaults {
if defaults.valueForKey("instantWeb") as! Bool==true {
print("Instant Web ON")
}
}
}
In iOS10, prova questo:
UNUserNotificationCenter.current().getNotificationSettings { (settings) in
// Your code here
}
- 1. Come scadere della cache dei frammenti quando le impostazioni internazionali cambiano?
- 2. Come ricevere notifiche quando le impostazioni internazionali del sistema cambiano in Android?
- 3. Favicon richiesto su tutte le rotte cambiano
- 4. iOS Previene il timer UILabel "agitazione" quando i numeri cambiano
- 5. Come nascondere la tastiera virtuale quando si cambiano le schede?
- 6. È possibile ripristinare le impostazioni sulla privacy in iOS?
- 7. IOS Ottieni impostazioni proxy
- 8. Le autorizzazioni di handle cambiano mentre nell'app
- 9. Quando è necessario salvare le impostazioni su Windows Phone 7?
- 10. ios cambiano visualizzazione secondaria indice runtime
- 11. iOS 5 storyboard, di programmazione determinare percorso
- 12. Come posso ripristinare le impostazioni di collegamento universale iOS 9?
- 13. Come aprire le preferenze/impostazioni con iOS 5.1?
- 14. Dove aggiornare i vincoli di Autolayout quando le dimensioni cambiano?
- 15. Scala SBT: attivazione di un'azione quando le dipendenze locali cambiano
- 16. Come determinare il primo giorno della settimana in iOS?
- 17. Come si cambiano le firme usando python gmail api?
- 18. Xcode 6 iOS Simulator non ricorda le impostazioni dell'app
- 19. Impostazioni separate nell'app iOS universale?
- 20. Come ricaricare automaticamente Django quando i file cambiano?
- 21. Schema URL "Apri Impostazioni" ios
- 22. iOS: esiste un modo per simulare le impostazioni locali dell'utente?
- 23. iPhone- Apri le impostazioni dalla mia applicazione iOS 6
- 24. Come determinare le autorizzazioni deprecate?
- 25. Come salvare le impostazioni GVIM?
- 26. Ripristina i contenuti e le impostazioni tutti i simulatori iOS
- 27. Come impostare le impostazioni locali dell'Identity del pool di applicazioni IIS quando è impostato su ApplicationPoolIdentity
- 28. Come modificare le impostazioni dell'applicazione (Impostazioni) mentre l'app è aperta?
- 29. Come determinare quale iOS SDK ho?
- 30. Come utilizzare le notifiche push basate su geo su iOS?
ah ok, ha senso. ora la mia prossima domanda è, come posso determinare quali impostazioni sono state cambiate? – Ben
+1. In genere dovresti aggiungereObserver in '-init' (o' -application: didFinishLaunchingWithOptions: 'per il delegato dell'app) e removeObserver in' -dealloc'. È più facile che tenere traccia di quante volte ci si è registrati (se si aggiungeObserver due volte, viene chiamato due volte ogni volta che viene inviata la notifica, IIRC). –
@ Ben Non esiste un modo reale per determinare quali impostazioni sono state modificate, ma se si cerca qualcosa di specifico, provare a memorizzare la vecchia versione quando viene eseguita la notifica, quindi verificarla la volta successiva. – Emil