6 votos

¿Cómo se utiliza el comando defaults con los grupos de aplicaciones?

En OS X Yosemite es posible tener preferencias que se comparten entre varias aplicaciones que están en el mismo grupo de aplicaciones. En el lado de desarrollo de las cosas es tan simple como la configuración del Grupo de Aplicaciones y luego usar [[NSUserDefaults alloc] initWithSuiteName:@"TEAMID.com.company.AppGroup"] en lugar del habitual [NSUserDefaults standardUserDefaults] . Estas preferencias se almacenan en ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup.plist .

Lo que estoy tratando de averiguar es cómo modificar esas preferencias desde fuera de la aplicación utilizando el comando defaults. Hasta ahora lo mejor que he encontrado es esto:

defaults write ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup PreferenceName -bool YES

Esto funciona más o menos en el sentido de que modifica el archivo .plist correcto y actualiza las preferencias que le digo. Pero no parece ser compatible con el almacenamiento en caché que se utiliza en Yosemite. Tan pronto como la aplicación intenta leer la misma preferencia, vuelve a lo que estaba establecido anteriormente.

¿Hay alguna forma de hacer que esto funcione de forma fiable?

4voto

Hank Puntos 1462

Hasta donde he podido determinar, todavía no hay una forma adecuada de hacer esto. Sin embargo, puedes hacer que funcione matando cfprefsd después de usar el comando anterior. Así que sólo uso algo como esto en la aplicación Terminal:

defaults write ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup PreferenceName -bool YES; killall cfprefsd

No es genial, pero es mejor que nada.

Actualización para MacOS Sierra (10.12): Desgraciadamente, usar la ruta del archivo ya no parece funcionar. Extrañamente funciona en archivos que están en otro lugar -como si copio un plist de App Group en el escritorio- pero no puedo conseguir que funcione bien en un plist de App Group en su ubicación normal.

Cabe destacar que man defaults ha incluido esta nota durante un tiempo:

El comando defaults se cambiará en una próxima versión mayor para que sólo funcione en los dominios de preferencias. Las utilidades generales de manipulación de plist se integrarán en un programa de línea de comandos diferente.

Sin embargo, como he dicho, esto no es un problema con las listas arbitrarias, parece específico de las listas en ~/Library/Group Containers/ .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X