Кейс: 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. Также пользователю должна быть предоставлена политика конфиденциальности;
- данные об активности пользователей могут использоваться только для улучшения функциональности приложения.
Таким образом, даже создание пользовательской клавиатуры — это полноценный проект со своими особенностями. Поэтому мы рекомендуем, прежде всего, провести подробную бизнес-аналитику, просчитать основные механики ещё на стадии проектирования и быть готовыми к тому, что в процессе могут возникнуть новые задачи, решение которых не всегда лежит на поверхности.
Статью написала Даша Маллер, собирали информацию, помогали и редактировали Глеб Красильников, Денис Луханин, Дима Аржаных и Олег Маренков.
Круто! Надо чтобы эпл добавили) А эльфийский есть?
Не нашли) А классный бы кейс получился!
@Магора а в Unicode входят эти символы или алфавит?
Алексей, спасибо! Да, эти символы есть в Юникоде:
https://util.unicode.org/UnicodeJsps/character.jsp?a=04A4
https://util.unicode.org/UnicodeJsps/character.jsp?a=0408
https://util.unicode.org/UnicodeJsps/character.jsp?a=04E6
https://util.unicode.org/UnicodeJsps/character.jsp?a=04F0
А еще о языке и его алфавите есть неплохая статья в Википедии:
https://ru.wikipedia.org/wiki/%D0%AE%D0%B6%D0%BD%D0%BE%D0%B0%D0%BB%D1%82%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA
Смысл в этом может и есть. Но вот вливать бюджет региона... 🤦♂️
Может стоило начать в школах язык преподавать, например, для начала. Сам учился в гимназии, в Горном-Алтае. Раньше были уроки Алтайского - сейчас нет. Кто этой клавой пользоваться то будет?
Сейчас обязательное изучение этих культурок запретили, только с согласия родителей.
Изучаю локализации в данный момент и занимаюсь внедрением в софт, подписался на вас! Отличный пример! Пишите как удастся договориться с apple, верю в вас и в Алтайский Танык!