Файл приложения-контейнера доступа к группе приложений IOS 8 в расширении клавиатуры

Я хочу получить доступ к файлу приложения-контейнера в моем пользовательском расширении клавиатуры с помощью функции группы приложений. Для этой цели я создал идентификатор группы на своем портале Apple, а также добавил его в обе мои цели (клавиатура и приложение). У меня есть успешный доступ к данным NSUserDefaults его работает нормально, я могу получить доступ к данным. Но я застрял при получении файла из контейнерного приложения. У меня есть URL-адрес доступа.

NSURL *containerURL = [[NSFileManager defaultManager] 
           containerURLForSecurityApplicationGroupIdentifier:@"group.com.company.app"];

NSURL Вернуть URL следующим образом.

/Users/AxisCyberTech1/Library/Developer/CoreSimulator/Devices/1649BBF4-6615-4E53-BFC9-A3D07F3CA70A/data/Containers/Shared/AppGroup/49A4F24B-30A8-474E-8FFA-072E0DF61CBD/

но этот путь не имеет доступа ни к одному файлу из исходного пакета контейнера. Как я могу получить доступ к файлу контейнера souce


person Shinning River    schedule 22.08.2014    source источник


Ответы (2)


Есть еще одно ограничение на расширение клавиатуры. Вы должны установить для RequestsOpenAccess значение YES в Info.plist, после чего он сможет получить доступ к файлам.

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html#//apple_ref/doc/uid/TP40014214-CH16-SW2

person Chris Truman    schedule 13.10.2014

Чтобы получить доступ к содержащемуся пакету приложений, он помещается в песочницу и не разрешает доступ из внешнего приложения. Вызовите [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_ID], чтобы получить URL-адрес общего контейнера группы приложений.

Обратите внимание, что использование внутреннего расширения NSFileCoordinator для доступа к общему контейнеру приложения может привести к взаимоблокировке. См. эту документацию.

person Alexander Kradenkov    schedule 06.01.2015