Плист и кеш путь - PullRequest
       9

Плист и кеш путь

0 голосов
/ 03 февраля 2012

Согласно правилам Mac App Store 2.30: «Программа может писать только в разрешенные места.»

Мое приложение (com.SomeApp) содержит комплектное приложение с собственным идентификатором (com.SomeHelper). Это вспомогательное приложение, к сожалению, может писать собственные настройки (~ / Library / Preferences / com.SomeHelper.plist) и кешировать файлы (~ / Library / Caches / com.SomeHelper). Рецензенты отклонили все приложение! Нет никакого способа обсудить это глупое правило. Разработчик может зарегистрировать только один идентификатор для приложения MAS в iTC, и я не могу использовать этот идентификатор для связанных приложений (чтобы предотвратить конфликты и пройти проверку мета-информации iTC). Файл кэша, сгенерированный сетевыми службами (по запросам URL).

Как решить эту головоломку? Есть ли способ отключить plist и кеш вообще? Или, может быть, есть способ изменить местоположение для настроек и файла кэша? Есть ли лучшее решение?

1 Ответ

0 голосов
/ 11 февраля 2012

Вот мое окончательное решение (частично в псевдокоде, извините):

// в main.m помощника:

@implementation NSUserDefaults (Forwarder)

-(void)setObject:(id)value forKey:(NSString *)defaultName
{
[[MainAppServer sharedPrefsServer]/* some IPC to parent process*/ setObject:value forKey:defaultName];// I still use distributed objects available before sandboxing rules, next we can use XPC, I hope…
}

@end


int main(int argc,char* argv[])
{
…

NSAutoreleasePool * arp = [NSAutoreleasePool new];
[NSURLCache setSharedURLCache:[[[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:@"/dev/null"] autorelease]];
[[NSUserDefaults standardUserDefaults] addSuiteNamed:@"your.main.app.plist-domain.here"];
[arp drain];
…
return NSApplicationMain(argc,  (const char **) argv);
}

Резюме:

  1. Мы отключили кэш
  2. Мы сделали пользовательские настройки по умолчанию для чтения через набор и запись через пересылку некоторым способом IPC…

Я проверил - файлы кеша и plist сейчас не создаются.Загадка решена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...