He creado una configuración personalizada utilizando el enfoque estándar de root.plist para el iphone. Me pregunto si hay una manera de determinar cuándo el usuario cambia esas configuraciones en mi aplicación ...cómo determinar cuándo cambia la configuración en ios
Respuesta
Puede escuchar NSUSerDefaultsDidChange-notificaciones con este:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged) name:NSUserDefaultsDidChangeNotification object:nil];
Siempre que se cambie NSUserDefaults, se llamará defaultsChanged
.
No olvide llamar al [[NSNotificationCenter defaultCenter] removeObserver:self];
cuando desee dejar de escuchar estas notificaciones (también debe hacer esto cuando el objeto se desasigna).
Regístrese para recibir notificaciones de NSUserDefaultsDidChangeNotification
. No es obvio, pero el iOS Application Programming Guide lo describe como tal:
Preferencias de que su solicitud expone a través de la configuración de aplicación se cambian
Los enlaces están muertos .. – Marmoy
Escuchar a cambiar en la configuración
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod:) name:NSUserDefaultsDidChangeNotification object:nil];
Recuerde retirar el observador, una vez que este controlador de vista ya no está en la memoria.
La sintaxis es para Swift 2. Uso de Swift que haría algo como esto para suscribirse a los cambios de las NSUserDefaults:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "defaultsChanged:", name: NSUserDefaultsDidChangeNotification, object: nil)
A continuación, cree el método de la siguiente manera:
func defaultsChanged(notification:NSNotification){
if let defaults = notification.object as? NSUserDefaults {
//get the value for key here
}
}
Sintaxis para Swift 3: 'NotificationCenter.default.addObserver (self, selector: #selector (self.defaultsChanged), nombre: UserDefaults.didChangeNotification, object: nil) ' –
Un ejemplo acceder a una configuración de tipo Bool específica de la aplicación con la clave "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")
}
}
}
En iOS10, intente esto:
UNUserNotificationCenter.current().getNotificationSettings { (settings) in
// Your code here
}
- 1. Determinar cuándo un ViewPager cambia las páginas
- 2. UIView, cómo determinar cuándo toques entró en la vista
- 3. jQuery evento para detectar cuándo cambia la posición del elemento
- 4. ¿Cómo detectar cuándo cambia la altura de su página?
- 5. iOS cambia altura de uitableview
- 6. ¿Cuándo cambia el * Window focus * en Android?
- 7. Cuándo usar layoutSubview en iOS
- 8. ¿Cómo determinar cuándo Fancybox está abierto?
- 9. iOS 6 - Cómo ejecutar código personalizado cuando cambia la orientación
- 10. Determinar cuándo ha finalizado stringByEvaluatingJavaScriptFromString
- 11. ¿Cómo detectar cuándo se cambia el tema en WP7?
- 12. iOS 5 del guión gráfico, programación determinar la trayectoria
- 13. iOS: ¿Cuándo usar qué identidad de firma de código en la configuración de compilación?
- 14. Configuración separada en la aplicación universal iOS?
- 15. ¿Cómo puedo determinar qué iOS SDK tengo?
- 16. ¿Cómo determinar cuándo se ha terminado de cargar Android WebView?
- 17. ¿Es posible restablecer la configuración de privacidad en iOS?
- 18. . Reinicio automático de la aplicación .Net cuando la configuración cambia
- 19. ¿Cómo puedo determinar cuándo terminará mi aplicación en segundo plano?
- 20. iOS: ¿Cómo detectar cuándo termina una animación?
- 21. Cómo determinar día, mes y año como int en iOS
- 22. soapUI cambia (deshabilita) la configuración proxy de Internet Explorer
- 23. UITableView/UIScrollVer cómo saber automáticamente cuándo cambia ContentSize?
- 24. Seguir para ver cuándo una vista cambia en angularjs
- 25. ¿Cuándo hacer la instrucción finalize en sqlite en iOS?
- 26. C# - aplicación de configuración no cambia
- 27. Determinar cuándo terminaron todos los hilos C#
- 28. Cuándo usar instancias perezosas en iOS?
- 29. ¿Cuándo debo llamar a setNeedsDisplay en iOS?
- 30. Determinar cuándo un video ha completado el almacenamiento en búfer
ah bien, tiene sentido. ahora mi siguiente pregunta es, ¿cómo puedo determinar qué configuración se modificó? – Ben
+1. Normalmente, agregaríaObserver en '-init' (o' -application: didFinishLaunchingWithOptions: 'para el delegado de la aplicación) y eliminaríaObserver en' -dealloc'. Esto es más fácil que hacer un seguimiento de cuántas veces se ha registrado (si agrega Observer dos veces, se le llamará dos veces cada vez que se publique la notificación, IIRC). –
@Ben No hay una manera real de determinar qué configuraciones se cambiaron, pero si busca algo específico, intente almacenar la versión anterior cuando se ejecutan las notificaciones, luego verifique eso la próxima vez. – Emil