Каков ожидаемый жизненный цикл каталогов групп приложений iOS 8?

Я начинаю исследовать расширения iOS 8 и вижу, что группы приложений — это механизм, предоставляемый для передачи данных между хост-приложением и расширением. Этот обмен данными может быть выполнен с помощью NSUserDefaults, плоских файлов и основных данных. Когда вы настраиваете группу приложений, на устройстве/симуляторе создается новый каталог, который находится за пределами изолированной программной среды приложения. Доступ к этому каталогу можно получить из основного приложения и расширения, и может показаться, что другие приложения из той же учетной записи/команды также могут получить доступ к этому каталогу.

Учитывая все это, я хотел бы знать, каков жизненный цикл общего каталога группы приложений и его содержимого. Мне не удалось найти документацию Apple, объясняющую это. Некоторое эмпирическое тестирование на симуляторе показало, что, когда установлено более одного приложения, обращающегося к группе приложений, каталог удаляется, когда удаляется последнее приложение, имеющее право на эту группу приложений. Это то, что я ожидал увидеть. Хотелось бы подтверждения, что это так. Кроме того, есть ли потенциал для очистки этого места системой в условиях низкого уровня диска?

Я пытаюсь определить, «безопасно» ли хранить основную базу данных ядра моего приложения в этом расположении группы приложений или вместо этого мне следует делать копии данных там. Я не хочу, чтобы моя основная база данных была неожиданно уничтожена системой.

Кроме того, какова цель каталогов групп приложений? Должны ли они использоваться для обмена данными только с расширениями или они предназначены в качестве общего механизма обмена данными между приложениями из одной учетной записи/команды разработчика?


person Paul Buchanan    schedule 24.09.2014    source источник


Ответы (1)


Я также опубликовал это на форумах Apple Dev и получил ответ от кого-то из представителей Apple по связям с разработчиками. Вот что они сказали:

Есть ли вероятность, что система очистит это место в условиях низкого уровня диска?

Этого не произойдет.

Я пытаюсь определить, «безопасно» ли хранить основную базу данных ядра моего приложения в этом расположении группы приложений или вместо этого мне следует делать копии данных там.

Размещение основного хранилища данных в каталоге группы приложений вполне разумно.

Кроме того, какова цель каталогов групп приложений?

Они существуют для того, чтобы наборы приложений могли обмениваться данными. Я думаю, что самое ясное выражение этого можно найти в документации Mac. В «Руководстве по дизайну песочницы приложения» говорится:

[...] приложение может использовать право com.apple.security.application-groups для запроса доступа к общему контейнеру, который является общим для нескольких приложений, созданных одной и той же командой разработчиков. Этот контейнер предназначен для содержимого, не предназначенного для пользователя, например для общих кэшей или баз данных.

Документация

person Paul Buchanan    schedule 07.10.2014