РезюмеПользовательские IOS клавиатуры доступ контейнера без прав полного доступа к
Я в настоящее время реализует пользовательский IOS клавиатуры. Мне нужно обмениваться данными между клавиатурой и содержащимися приложениями. Это работает в некоторой степени, даже если пользователь отключил полный доступ. Зачем?
ПОДРОБНО.Подробнее
Для обмена данными между клавиатурой и содержащей приложение, я установил приложение группу и использовать
NSFileManager
.defaultManager()
.containerURLForSecurityApplicationGroupIdentifier("mySuiteName")
обмениваться файлами и
NSUserDefaults(suiteName:"mySuiteName")
для другие настройки.
Насколько я понимаю, пользователю необходимо активировать полный доступ для моей клавиатуры в системных настройках. В App Extension Programming Guide состоянии:
Если вы запрашиваете открытый доступ, установив значение этого ключа на YES, ваши успехи клавиатуры следующих возможности [...]:
- Возможности использовать общий контейнер с клавиатурой содержащий приложение, которое позволяет такие функции, как обеспечение управления пользовательского интерфейса пользовательских лексикон в содержащем приложение
Я добавил требуемое свойство в файле Plist и посмотреть по опции в настройках клавиатуры. Для того, чтобы проверить, если пользователь разрешает полный доступ к клавиатуре, я пошел с известным подходом и тест на наличие картонного
UIPasteboard.generalPasteboard().isKindOfClass(UIPasteboard)
, который работает, как ожидалось.
Однако я заметил, что если полный доступ отключен я все еще могу загрузить изображения с клавиатуры с помощью
UIImage(contentsOfFile: imagePath)
с imagePath
указывающей на файл в общем контейнере. Я тестировал это на двух устройствах под управлением iOS 9.2. Разве это невозможно? Мне интересно, не понял ли я ограничения для общего контейнера.