0

РезюмеПользовательские 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. Разве это невозможно? Мне интересно, не понял ли я ограничения для общего контейнера.

ответ

3

В какой-то момент между iOS 8.0 и 9.0 (я хочу сказать 8.3, но не могу вспомнить точную версию) Apple изменила ограничения на пользовательские клавиатуры, чтобы у них было только для чтения доступ к совместно используемому контейнеру - как файловая система, так и связанная с ней NSUserDefaults, даже если полный доступ отключен.

Документация еще не обновлена. Вы должны подать радар.

Смежные вопросы