Запечённые мобильные плейсхолдеры

Jun 27, 2018 11:31





Те самые плейсхолдеры

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

Мобильные приложения Драйва2 достаточно сложные, потому что часть сделана на родных для ОС технологиях (на нативных), а часть - на веб-технологиях. Такой подход называют «гибридным». Вебовая часть сделана на вебвью - это такой встроенный браузер, с которым взаимодействует нативная часть.

В принципе, никакого рокетсайнса в гибридном подходе нет, но чтобы всё хорошо работало, часто приходится что-то подстраивать, подкручивать, тюнинговать - изворачиваться всячески, короче. Например, мы настроили правильный скрол в вебвью и инерция стала как в нативе. А ещё отдаём разные шрифты на разные платформы - в андроид Робото, а в айос - Сан-Франциско. И, конечно, есть нативные функции, которые вызываются по команде из вебвью - тыкнули кнопку на сайте, который отображается в приложении через вебвью, а открылась нативная форма.

В результате всех ухищрений среднестатистический пользователь не подозревает, что приложение не нативное, и ожидает, прости, господи,  нативного экспириенса.

Кухня получается довольно сложная, и кое-что работает не так, как хотелось бы. Одна из таких штук - прелоадеры в айос-версии. Казалось бы - чего сложного? Пользователь открывает страничку. Видит прелоадер. Когда данные приходят с сервера, прелоадер пропадает, а данные появляются. Просто, но не с эпловым вебвью. Эта гадина не может честно сказать, когда у неё уже есть данные и можно убрать прелоадер. В результате прелоадер то исчезает раньше времени, то крутиться поверх данных.

Долгое время мы жили вообще без прелоадера в айосе. Типа, был просто серый экран, а потом - бух и всё загрузилось. Особенно отстойно было с плохим интернетом, когда приходилось неизвестно сколько пялиться в пустой серый экран.

В нативе такое решают просто - делают заглушки, которые показывают, что данных пока нет. Такие заглушки называют плейсхолдерами (внимательно, не путаем прелоадеры и плейсхолдеры). Когда данные приходят, плейсхолдеры исчезают, а данные появляются. Но у нас-то вебвью и мы не можем нарисовать заглушку - дизайн хранится на сайте, а не в приложении.

Короче, мы придумали, как это решить - запекли хтмл-плейсхолдеры прямо в приложение. Работает так. В приложении хранятся кусочки хтмл-кода с плейсхолдерами. Когда пользователь открывает вебвьюшный экран, туда запихивается нужный плейсхолдер, а когда вебвью получает данные, хтмл-код плейсхолдера заменяется на боевой.

Фишка в том, что и код страницы и код плейсхолдера хранятся на сайте, поэтому плейсхолдер всегда похож на настоящую страницу - если поменяем, скажем, скругление карточек, то поменяем и в плейсхолдере, и на странице. А в приложении есть механизм скачивания и сохранения плейсхолдеров - «запекания». В результате приложение может отображать плейсхолдеры мгновенно:

image Click to view



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

Увидеть вживую можно в приложении. Регистрироваться для этого необязательно:



App Store: DRIVE2

itunes.apple.com



P. S. Осталось теперь, чтобы какой-нибудь хороший человек нарисовал кучу плейсхолдеров для разных страниц.

Разработка, Плейсхолдер, Мобильное приложение, Мои проекты, Драйв

Previous post Next post
Up