{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

Кейс: iOS клавиатура спасает редкий язык

Задумайтесь, сколько текста вы набираете на своем телефоне в день. А теперь представьте, что в раскладке клавиатуры не хватает 4 букв. С такой проблемой долгое время жили алтайцы — алтайская письменность основана на кириллице, с добавлением четырех букв: Ҥ, Ј, Ӧ, Ӱ.

Ни в одной кастомной клавиатуре на iOS не было возможности добавить алтайский язык, что заставляло пользователей отказываться от родного языка в пользу русского. Власти озаботились проблемой сохранения национальной культуры, поэтому на заседании Совета по алтайскому языку при Главе Республики Алтай было решено запустить проект «Алтайские буквы на iOS». И они обратились к нам.

Сегодня на примере нашего кейса алтайской клавиатуры, или Алтай Танык, мы расскажем, как создать кастомную клавиатуру. И почему это не так просто, как может показаться.

Основные задачи

Успех любого мобильного приложения во многом зависит от того, насколько органично оно впишется в жизнь пользователей. Необходимо учесть все неочевидные механики и варианты использования. И рекомендации Apple, конечно. Особенно если речь идет о таком повседневном инструменте как клавиатура.

Например, как должен происходить переход с символов на буквы после того, как символ введен? Или как должна выглядеть раскладка в разных приложениях, какие символы должны быть под рукой в заметках, а какие в почте или браузере? Не забываем про адаптацию под разные девайсы. Разные модели iPhone и iPad имеют разные размеры экранов, которым должна соответствовать клавиатура.

Добавляем сюда видение заказчика и получаем объемный список задач, которые решаются тщательным тестированием на эмуляторах и реальных устройствах.

А что там с Apple?

С выпуском iOS 8 Apple позволили сторонним разработчикам создавать кастомные приложения для клавиатуры, которые можно скачать в App Store и использовать в качестве расширения, заменив стандартную клавиатуру.

Открытый доступ к API для разработки сторонних клавиатур служит своеобразным мостиком между приложениями — введённые данные могут попадать из одного в другое, либо сразу отправляться на сервер разработчика, что может негативно сказаться на безопасности. В связи с этим, Apple дает строгие указания, что делать можно, а что нет:

  • кастомная клавиатура может использоваться практически в любом приложении на устройстве. Для этого необходимо вручную добавить ее в настройках: «Основные» > «Клавиатура» > «Клавиатуры» > «Новые клавиатуры»;
  • клавиатура может получить доступ к адресной книге и геолокации только после разрешения пользователя;
  • клавиатура может использовать встроенный словарь для автодополнения и автокоррекции текста. Данные берутся из общего словаря, адресной книги и из сокращений, указанных пользователем в настройках;
  • нельзя брать за основу встроенную клавиатуру;
  • кастомная клавиатура не имеет доступа к микрофону. Но нам удалось решить эту проблему. Напишем об этом далее;
  • пользовательская клавиатура не может использоваться в поле для ввода номера телефона, пароля или скрытого текста;
  • в некоторых приложениях использование сторонних клавиатур может быть запрещено разработчиками этих приложений.

Гайды Apple по разработке кастомных клавиатур можно посмотреть здесь — Custom keyboard

Подводные камни

Когда, казалось бы, всё учтено, всё равно могут всплыть неожиданные проблемы. Мы столкнулись с тем, что клавиатура долго прогружается. И причин тому было две:

  • аппаратные ограничения старых моделей устройств;
  • особенность работы кастомных клавиатур на iOS: каждый раз они подгружаются заново.

Что делать? Прежде всего, посмотреть, как решают аналогичные проблемы другие. Мы позаимствовали и адаптировали решение Яндекс.Клавиатуры. Во время прогрузки приложения, пользователь видит временную «заглушку», а начать печатать может только после того, как вся клавиатура загрузится и отрисуется.

Ещё об одной проблеме мы уже упоминали — запрет Apple на доступ расширений к микрофону, что лишает нашу клавиатуру поддержки голосового ввода. Или нет?

Весь секрет в том, что встроенный интерфейс распознавания голоса нельзя использовать поверх кастомной клавиатуры. Поэтому мы организовали распознавание следующим образом:

  • при нажатии на кнопку микрофона приложение-клавиатура открывается в отдельном окне;
  • пользователь диктует текст, затем приложение снова открывает текущее окно и вставляет набранный текст.

Что примечательно, на моделях iPhone X и выше кнопка голосового ввода доступна отдельно, без отображения самой клавиатуры, что делает возможным голосовой ввод даже при открытой сторонней клавиатуре.

Дьявол в деталях

Пользователи iOS весьма консервативны в своих привычках, поэтому нам хотелось, чтобы наша клавиатура выглядела как родная. Но просто взять и скопировать нельзя по правилам Apple. Поэтому мы решили вооружить ее кастомным шрифтом, который отрисовал наш дизайнер. Так мы получили продукт, который органично вписался в интерфейс и не нарушил основные гайды.

Для удобства пользователей мы также предусмотрели возможность настроить 3-рядный и 4-рядный вид клавиатуры. 3-рядный вид более привычен для пользователей iOS. В этом варианте набор символов алтайского алфавита происходит при длительном нажатии на следующие символы: ö — о, ÿ — у, ҥ – н, j – д.

В 4-рядном виде символы алтайского алфавита располагаются в дополнительном верхнем ряду.

На что еще обратить внимание

Любая кастомная клавиатура — это расширение, и опубликовано оно может быть только в составе приложения-контейнера. С ним оно устанавливается, с ним и удаляется. Это ограничение распространяется только на iOS. На Mac расширение может существовать отдельно.

Также расширения типа «Клавиатура» имеют особый список дополнительных рекомендаций по прохождению ревью Apple:

  • пользователь должен иметь возможность перейти от вашего расширения к следующей клавиатуре;
  • клавиатура должна продолжать работать даже если нет доступа к интернету;
  • в клавиатуре должен быть предоставлен удобный способ ввода чисел;
  • приложение, которое содержит клавиатуру, должно быть в категории Utilities. Также пользователю должна быть предоставлена политика конфиденциальности;
  • данные об активности пользователей могут использоваться только для улучшения функциональности приложения.

Таким образом, даже создание пользовательской клавиатуры — это полноценный проект со своими особенностями. Поэтому мы рекомендуем, прежде всего, провести подробную бизнес-аналитику, просчитать основные механики ещё на стадии проектирования и быть готовыми к тому, что в процессе могут возникнуть новые задачи, решение которых не всегда лежит на поверхности.

Статью написала Даша Маллер, собирали информацию, помогали и редактировали Глеб Красильников, Денис Луханин, Дима Аржаных и Олег Маренков.

0
7 комментариев
Написать комментарий...
Ivan Zamorev

Круто! Надо чтобы эпл добавили) А эльфийский есть?

Ответить
Развернуть ветку
Магора
Автор

Не нашли) А классный бы кейс получился!

Ответить
Развернуть ветку
Алексей Долгих - CVO Scout VC

@Магора а в Unicode входят эти символы или алфавит?

Ответить
Развернуть ветку
Магора
Автор
Ответить
Развернуть ветку
Roman Kuznetsov

Смысл в этом может и есть. Но вот вливать бюджет региона... 🤦‍♂️
Может стоило начать в школах язык преподавать, например, для начала. Сам учился в гимназии, в Горном-Алтае. Раньше были уроки Алтайского - сейчас нет. Кто этой клавой пользоваться то будет?

Ответить
Развернуть ветку
Демид Московский

Сейчас обязательное изучение этих культурок запретили, только с согласия родителей. 

Ответить
Развернуть ветку
Алексей Долгих - CVO Scout VC

Изучаю локализации в данный момент и занимаюсь внедрением в софт, подписался на вас! Отличный пример! Пишите как удастся договориться с apple, верю в вас и в Алтайский Танык!

Ответить
Развернуть ветку
4 комментария
Раскрывать всегда