Является ли выполнение команды типа «по умолчанию write com.blahblah key true» частным API? - PullRequest
3 голосов
/ 06 ноября 2011

В руководствах Mac App Store говорится, что вы не можете использовать частные API.

Я играю с приложением, которое изменяет настройку Finder с использованием параметра команды терминала showAllFiles в true:

defaults write com.apple.Finder AppleShowAllFiles TRUE

Есть ли способ отправить что-то подобное в Mac App Store? Для меня это похоже на приватный API. У меня вопрос: есть ли публичный эквивалент?

Ответы [ 2 ]

5 голосов
/ 06 ноября 2011

Я думаю, это будет зависеть от того, как вы выполните эту команду. Какие C / ObjC API вы используете для выполнения этого? Конечно, существуют публичные API, которые можно использовать для выполнения этой команды.

Однако важно помнить, что Apple потребует, чтобы приложения, представленные в Mac App Store, приняли схему «песочницы», начиная с марта 2012 года. Документы здесь:

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/AppSandboxDesignGuide/AboutAppSandbox/AboutAppSandbox.html

Я подозреваю, что для выполнения этой команды (даже через общедоступные API) в приложении с песочницей вам потребуется заявить о необходимости предоставления специального разрешения. Подробнее о правах здесь:

http://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/EntitlementKeyReference/Introduction/AboutEntitlements.html%23//apple_ref/doc/uid/TP40011195

В частности, я думаю, вам может понадобиться это «временное право»:

com.apple.security.temporary-exception.files.home-relative-path.read-write

Как я полагаю, написание пользовательских значений по умолчанию для приложения, такого как Finder, повлечет за собой запись в файл на диске под домашним каталогом пользователя:

~/Library/Preferences/com.apple.finder.plist
1 голос
/ 07 ноября 2011

Я предполагаю, что вы пытались использовать NSUserDefaults и обнаружили, что у него нет реальной возможности изменять настройки для других приложений. К счастью для вас, CFPreferences API существует для такого рода целей и может изменять настройки под любым идентификатором пакета.

Тем не менее, фактические настройки других приложений - это детали реализации, частные для этих приложений; даже если вы не используете недокументированный инструмент / API, вы вносите изменения в другой процесс, что может не соответствовать правилам App Store.

...