Come si usa il comando defaults con i gruppi di app?

4

In OS X Yosemite è possibile avere preferenze condivise tra più app che si trovano nello stesso gruppo di app. Dal lato dello sviluppo delle cose, è semplice come impostare il gruppo di app e quindi usare [[NSUserDefaults alloc] initWithSuiteName:@"TEAMID.com.company.AppGroup"] invece del solito [NSUserDefaults standardUserDefaults] . Queste preferenze vengono memorizzate in ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup.plist .

Quello che sto cercando di capire è come modificare quelle preferenze dall'esterno dell'app usando il comando defaults. Finora il migliore che ho trovato è questo:

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

Questo tipo di funziona in quanto modifica il file .plist corretto e aggiorna le preferenze a cui le dico. Ma non sembra compatibile con la memorizzazione nella cache utilizzata in Yosemite. Non appena l'app tenta di leggere la stessa preferenza, ritorna a ciò che è stato impostato in precedenza.

C'è un modo per rendere questo lavoro affidabile?

    
posta robotspacer 10.11.2014 - 14:58
fonte

1 risposta

1

Per quanto sono stato in grado di determinare, non esiste ancora un modo corretto per farlo. Tuttavia, puoi farlo funzionare uccidendo cfprefsd dopo aver usato il comando precedente. Quindi uso qualcosa di simile nell'app Terminal:

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

Non eccezionale, ma meglio di niente.

Aggiornamento per macOS Sierra (10.12): Sfortunatamente l'utilizzo del percorso file non sembra funzionare più. Stranamente funziona su file che sono altrove, ad esempio se copio un plist di app group sul desktop, ma non riesco a farlo funzionare correttamente su un gruppo di app plist nella sua posizione normale.

Vale la pena notare che man defaults ha incluso questa nota per un po 'di tempo:

The defaults command will be changed in an upcoming major release to only operate on preferences domains. General plist manipulation utilities will be folded into a different command-line program.

Come ho detto però, questo non è un problema con i plists arbitrari, sembra specifico per i plists in ~/Library/Group Containers/ .

    
risposta data 09.09.2015 - 23:24
fonte

Leggi altre domande sui tag