Хранение данных в пользовательской клавиатуре

Я создаю пользовательскую клавиатуру, которая учится тому, как вы печатаете, для более умной автокоррекции. Чтобы научиться...

Мне нужно иметь возможность СОХРАНЯТЬ данные на пользовательское устройство. Я пытался использовать NSFileManager с NSDocumentsDirectory, но в AppExtension ничего не сохраняется. (Я протестировал код (скопировал и вставил) в обычном приложении (не расширение приложения), и это сработало). Я даже включил «Запросы открытого доступа» в .plist и переустановил клавиатуру… данные все равно не сохранялись.

Есть ли способ хранить данные в расширении приложения?


Возможные решения, которые я обдумывал:

• Возможно, создание контакта в адресной книге пользователя, в котором есть моя информация (если это разрешено расширениям приложения), но пользователь может быть подозрительным относительно того, почему мое приложение запрашивает разрешение на изменение адресной книги его контакта).

• Отображение скрытого UIWebView, использующего внедрение JavaScript для хранения и чтения данных База данных Javascript Safari, но я боюсь, что эти данные могут быть удалены, если кеш когда-либо будет очищен.


person Albert Renshaw    schedule 16.08.2014    source источник


Ответы (1)


edit: теперь это больше не работает для меня на iDevice beta 5 (с включенным ИЛИ отключенным requestOpenAccess)? Но это все еще работает на SIMULATOR beta 5? Хм

__ исходное сообщение ниже: _

Оказывается, NSUserDefaults сохраняет данные, просто он не работает на симуляторе BETA 3, но работает на iDevice BETA 5. RequestsOpenAccess НЕ нужно включать!

NSUserDefaults *defaults = [[NSUserDefaults alloc]initWithSuiteName:@"com.company.keyboard.uniqueCodeHere"];//uniqueCodeHere can be anything... we just have to make sure the SuiteName isn't equal to your info.plist bundle ID so we add a random uniqueCode to the end of this ID.
[defaults setObject:@"myStringData" forKey:@"savedStrings"];
[defaults synchronize];

*Примечание: SuiteName НЕ МОЖЕТ совпадать с идентификатором пакета в info.plist или по какой-то причине не работает...

person Albert Renshaw    schedule 16.08.2014
comment
Не получая этого решения, как это работает, я сталкиваюсь с той же проблемой -device-b" title="общаться с пользовательским расширением клавиатуры, когда хост-приложение не работает на устройстве b">stackoverflow.com/questions/26162773/ - person Nitin Gohel; 06.10.2014