Обновить

Как мы переводим миллионы iOS-пользователей на новое приложение каждые несколько месяцев

Время на прочтение9 мин
Охват и читатели12K
Всего голосов 29: ↑25 и ↓4+24
Комментарии48

Комментарии 48

монолитное нативное приложение стало ловушкой в условиях санкций

Вот тут удивительно: неужели понадобились санкции для такого вывода?

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

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

Справедливо, санкции тут не первопричина, а ускоритель. К модульности рано или поздно приходят все, у кого продукт активно развивается — просто потому что монолит не успевает за бизнесом.

Интересно, что вы пошли в нативную модульность с пересборкой через админку. Мы в итоге выбрали web-модули внутри контейнера — у банка специфика в том, что регуляторных и продуктовых изменений много, и переиспользовать одну и ту же логику между iOS, Android и интернет клиенте оказалось дешевле, чем поддерживать три нативные реализации. Но в ритейле, где UX-требования к скорости и анимациям выше, ваш выбор выглядит логичным.

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

Ну и веб-вью мы совсем-то не избегали: именно благодаря ему удалось затащить онлайн-продажи, пусть и в супер-базовом виде буквально за 2 недели с началом ковидного карантина.

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

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

Да, ваше наблюдение верное — подход не новый, крупные банки переходили на web-модули внутри контейнера в разные годы. Мы полноценно живём в этой архитектуре с начала 2024 года, и большинство правок интерфейса действительно едет без выкатки клиента — эффект «куски меняются сами» ровно отсюда. Миграция на новое приложение, про которую статья, нужна в тех случаях, когда изменения выходят за рамки контейнера — меняется схема API, появляются новые нативные компоненты.

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

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

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

Ну а сейчас вообще оно ставиться как один большой Iframe (или даже как мини браузер) и просто тупо ведет на веб версию. Никакой апп стор не нужен и работает на полностью зарубежном айфоне в другой стране. Но что интересно - даже предлагает включить Face ID.

Спасибо за честный отзыв — это полезно читать.

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

Про «один большой iframe»: это как раз то, о чём написана статья — гибридная модель, где контейнер нативный, а часть экранов на вебе. Face ID при этом работает через нативный слой, не через браузер — поэтому и предлагает включить. Это не случайность, а осознанная архитектура: нативное там, где без него нельзя, веб там, где нужна гибкость обновлений.

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

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

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

Читая статью, пришла в голову известная фраза: "хотели как лучше, а получилось - как всегда".

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

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

И в чем смысл тогда ваших ковровых блокировок? Если, все равно, приходится поддерживать несколько версий приложения.

Хороший вопрос, тут важно уточнить, что селективность — это не «оставили часть клиентов на старом приложении навсегда», а перенос их миграции в другой канал.

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

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

На сколько же product manager далек от пользователя, если готов окирпичивать приложение для того чтобы показать новые баннеры продуктов и предложений.

Окирпичивание — это не про баннеры. Это единственный доступный инструмент принудительной миграции в условиях, когда у тебя нет доступа к push-уведомлениям, нет возможности обновить бинарник и нет App Store. Все «мягкие» каналы — SMS, email, баннеры в интернет-банке — давали конверсию в разы ниже.

Можно долго рассуждать о близости к пользователю, но если клиент застрял на приложении двухлетней давности — он не видит новых продуктов, не может воспользоваться актуальными предложениями и теряет доступ к функциям, которые уже доступны другим. Небольшое неудобство при переходе — это способ дать клиенту больше, а не меньше.

он не видит новых продуктов, не может воспользоваться актуальными предложениями и теряет доступ к функциям, которые уже доступны другим. Небольшое неудобство при переходе — это способ дать клиенту больше, а не меньше.

И вместе с этим “больше” впарить новые рекламные банеры и сторис в приложении.

Честно — да, баннеры и сторис там тоже есть, спорить не буду. Но они идут в комплекте с переводами, вкладами, кредитами и всем остальным. Вопрос не в том, нравятся ли рекламные механики, а в том, что альтернатива — оставить клиента на приложении, которое вообще не развивается и не поддерживается.

Но они идут в комплекте с переводами, вкладами, кредитами и всем остальным.

Т.е. в старом приложении не было переводов?

Типичная ситуация: регулятор потребовал, чтоб в формочке перевода или кредита теперь появился новый блок с какими-то предупреждения, "оценивайте свои возможности, ириски". Старое приложение вы обновить не можете, а платить штрафы - наверное не захотите)

Из подобного разве что внедрение СБП было. Все остальное - это баннеры и сторис все же.

Вывод, к которому мы пришли: чем больше продуктовой логики живёт вне бинарника, тем дешевле и мягче каждая следующая миграция. Мы перешли к гибридной модели: мобильное приложение — это контейнер, оболочка. Внутри — web-модули на React микрофронтах, связь между слоями через iFrame и PostMessage. Значительная часть клиентских путей переехала в PWA.

А вариант ограничиться web-версией не катит? Поддержка -0, всегда актуальная версия, зависимость от Apple Store -0. Что вы туда такое уникальное впихнуть хотите кроме попытки найти установленный vpn у клиента, что нельзя сделать с помощью обычного web-сайта?

Веб-версия — это не серебряная пуля. Вот конкретные вещи, которые нативное приложение даёт там, где браузер не справляется:

— Push-уведомления на iOS в браузере до сих пор работают хуже, чем в нативе, особенно на старых версиях системы, а наша аудитория далеко не всегда на последней iOS.

— Биометрия (Face ID / Touch ID) в вебе через WebAuthn работает, но с ощутимыми ограничениями по сравнению с нативным Keychain.

— Офлайн-режим и работа в условиях плохого соединения — критично для регионов, где живёт значительная часть нашей аудитории.

— Доступ к камере для сканирования документов, QR-кодов, чеков — в браузере есть, но с заметно худшим UX.

— Доступ к контактам для переводов по номеру телефона — в браузере недоступен совсем.

— Наконец, просто конверсия: пользователь, у которого приложение на главном экране, возвращается чаще, чем тот, кто должен каждый раз вспоминать адрес сайта.

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

— Биометрия (Face ID / Touch ID) в вебе через WebAuthn работает, но с ощутимыми ограничениями по сравнению с нативным Keychain.

Я лично не пользуюсь и другим не советую.

— Офлайн-режим и работа в условиях плохого соединения — критично для регионов, где живёт значительная часть нашей аудитории.

Хотелось бы подробностей. Что вы офф Лайн предоставляете? Перевод офф Лайн не работают. Ваш рекламный спам можно закешировать. Плохое соедениение- если клиент скачал большую часть вашего кода на телефон но надо по https загнать минимум информации. Если не рекламное видео.

— Доступ к камере для сканирования документов, QR-кодов, чеков — в браузере есть, но с заметно худшим UX.

Не факт. Опять таки, меньше доступа - меньше дырок.

— Доступ к контактам для переводов по номеру телефона — в браузере недоступен совсем.

Импорт/ экспорт контактов уже не существуют? Плюс не надо вам лезть во все мои контакты чтобы я мог 10-ти людям перевод по номеру телефона послать.

— Наконец, просто конверсия: пользователь, у которого приложение на главном экране, возвращается чаще, чем тот, кто должен каждый раз вспоминать адрес сайта.

Уже писал- можно сохранить сайт как приложение на телефоне. Технологии 2023 года или даже раньше.

В общем - рекламам не лезет, поэтому будем пихать нативное приложение.

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

Полностью согласен — нативное приложение всегда лучше PWA по UX, и мы именно к этому стремимся. Гибридная модель с PWA-слоем внутри нативного контейнера — это не отказ от нативного приложения, а вынужденный компромисс, который позволяет обновлять продукт без пересборки бинарника в условиях, когда тебя могут выкинуть из стора в любой момент. Снаружи — нативное приложение, внутри — часть экранов на вебе. Цель та же: чтобы приложение было, работало и не деградировало после каждого удаления.

А вы видели хоть одну их веб версию, которая бы работала быстро? Я вот не встречал, увы. Они приучили пользователей, что веб - это лаги.

Зачем вообще мигрировать?

По сути причина тут может быть только одна: чтобы юзер видел новый дезигн. Всё остальное (новые кредитные продукты и т.п.) решается простым добавлением нового элемента в массив, который возвращает эндпоинт /products?v=uchet.nadoya

Не совсем так, и статья как раз подробно объясняет почему.

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

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

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

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

клиент в старом приложении не видит предодобренного кредита

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

Все остальные "выгодные предложения", которые появляются в новых версиях банковских приложений - это такой же бесполезный для клиента мусор. Ну и бонусом приходится привыкать к новому UI, а теперь еще и не забывать каждый раз отключать VPN.

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

Бывает и такое.

  • кнопка в банкомате про кредитную карту предобренную - если нажать согласие - подходишь к стойке и получаешь карту, все (у Альфы было)

  • баннер про предообренный кредит на сумму - отображается выбор вариантов (отличаются в основном добавлением ненужного хлама) + можно выбрать срок/сумму и отображаются проценты/платеж. Нажмешь - получишь на счет. Нюанс - пользователь у кого подключен мониторинг кредитной истории про это предложение запросто может узнать из этого самого мониторинга - будет сообщение вроде "начато оформление кредита"(не помню точный текст). Поддержка банка говорит что ну это нормально и вообще баннер же есть. Если НЕ воспользоваться - может и пропасть предложение. Угадайте банк с одной попытки :)

Всё, что угодно, лишь бы не развивать веб-версию личного кабинета. Там ведь даже ServiceWorker'а полтора года назад не было, ни пасскеев, ни TOTP. Могли бы уж нанять кого-нибудь, чтобы он из жалости к браузерной версии сделал вам нормальное решение.

Впрочем, ЛК для меня бесполезен теперь. Кто придумал, что после двух неправильных попыток ввода пароля + самостоятельного восстановления + ещё двух неправильных попыток ввода пароля = надо идти пешком до отделения банка и доказывать свою личность там? Для вас привязанные Госуслуги - уже не авторитет?

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

Про блокировку и поход в отделение — понимаю фрустрацию. Это не продуктовая прихоть, а требования по безопасности. Над выбором из более удобных способов восстановления работаем.

Вроде как апреле позволяет сохранить иконку приложения на «столе» телефона и оно не будет ничем отличаться от встроенного приложения, но нет- мыши плакали, кололись но продолжали есть кактус

Будет отличаться, еще как будет.

Мелочи но будет.

А еще - подход как у авторов статьи (это не только у них),создает...дополнительные проблемы чисто тем что в условиях неидеальной связи - натив будет кидать несколько json'ов на экран а гибрид - будет грузить собственно сам экран что не дольше (и, нет - CDN не особо поможет, особенно если у пользователя VPN). Один крупный банк вообще интересно сделал - на андроид сначала добавили режим когда fallback на веб-версию встроенную (в зависимости от типа устройства,etc) но была ручка отключить это, затем переделали - высокочастотные фичи натив (но можно включить fallback для этой фичи, команда фичи решает), остальное fallback на веб. На iOS они планировали сделать заняться учетом надоев и сделать похожий механизм но с нулевым списком высокочастотных фич сначала.

Будь у ваших продактов чуть побольше мозгов - доброй половины шишек можно было бы избежать. Разве не в этом их работа? Отдельный привет автору идеи с монолитом. Вместо того чтобы использовать чужой опыт - можно набить своих шишек и в итоге прийти к тому же результату, но позже и «своим путем».

Мне как пользователю вообще никуда не упиралось новое приложение. Потому что основной функционал появился в большинстве банковских приложений в момент их создания. Это управление счетами, возможность перевести деньги и оплатить услуги. И это должно быть быстро, удобно и легко. Попытки впарить мне акции компании, сим-карту, кэшбэк на стрижку питона, аренду велосипеда, билеты в театр - я не считаю заботой о пользователе. Попытки сломать привычный и удобный UX в угоду втюхивания своих услуг - отдельный вид искусства. (Привет Сберу, который воткнул вкладку «Кредиты» на место «Истории платежей», убрав последнюю в меню. Кредитов у меня нет и надеюсь, что не будет. А вот историей платежей я пользовался регулярно доя ведения бюджета) Если какой-то из банков выкинет трюк с блокировкой старого приложения для миграции, а я в этот момент буду вне дома - я не буду ставить новое приложение. Воспользуюсь веб-версией, а потом закрою все счета и переведу деньги в другой банк, который подобной ерундой не занимается (Привет, Совкомбанк).

Кстати - не думали оформить карту ну например Альфа-Банка. Белорусского? :). Очень минималистичное приложение по сравнению с Российскими банками. Белкарт работает там где мир работает(кроме MirPay, у них свое извращение требующие белорусской сим), MasterCard есть пусть и сильно ограниченный. Открывается при желании из России на раз. Переводы с России работают.

Уважаемый авто, давайте разберемся с миллионами пользователей которых вы из одного приложения App Store в другое перетягиваете. Поиск по интернету дал некоторые цифры. Оценка количества пользователей ниже.

На конец 2021 года у РСХБ было порядка 7,5 млн розничных клиентов (это банк публиковал). Доля iOS-устройств в России на тот момент — около 30%. При проникновении мобильного банкинга в активной клиентской базе около 50–60% (типично для РСХБ, который сильно отстаёт от лидеров), приложение в App Store могло иметь по грубой оценке порядка 1–1,5 млн установок

Согласитесь что 1-1.5 млн установок это не миллионы. Хотя наверное и много.

Было бы интереснее информацию от товарищей из Сбера получить что там у них творится. У Сбера около 80 млн пользователей на apple/ android это у них проблемы мигрировать массу клиентов, а не у вас с 8 млн клиентов всего.

В физике параметром можно приенебречь если он в 10 и более раз меньше остальных …

Что нужно сделать, чтобы попасть в сегмент чувствительных клиентов и не ставить обновления?

Попасть в какой-то верхний перцентиль приносимого банку дохода, очевидно. Ничего личного, просто бизнес.

Кусок про "упущенную выручку" и иже с ним напомнили мне, как я "старшему поколению" объяснял, как пользоваться новым приложением банка (ВТБ купил РНКБ, приложение сменилось, все такое).

Так вот, там даже я терялся от обилия всякой нахрен не нужной, рекламной всячины. И, кстати, много где так до сих пор.

Ребят, бОльшая часть людей пользуется функционалом: посмотреть баланс, перевести по номеру, оплатить по qr.

Не надо остальное впихивать в приложение. Сделайте НОРМАЛЬНУЮ веб версию для тех, кто на ios и не делайте людям мозги.

Про веб-версию: она есть, и базовые операции там работают. Но баланс, перевод по номеру и оплата по QR в браузере на iOS — это заметно хуже по UX, чем в нативе. Особенно QR: камера через браузер на iPhone работает с ощутимыми ограничениями. Плюс без приложения нет push-уведомлений о транзакциях — а это для многих критично.

Так что веб — это не замена, это дополнение для тех, у кого совсем нет возможности установить приложение.

Не обновлял приложение Тиньков банка с 2022 года, никакими функциями не обделён. Практику "Не обновишься - не пустим", считаю категорически неуважительной к пользователю.

Перешел на PWA версию - как-то работает.
Из минусов, например, одно время были сломаны переводы на другие банки.

Т.е. хотел перевести на озон карту - бесконечно висело.
Через 1-2 недели, емнип, поправили.

Ну и при плохой связи(считай, вся мобильная), приложение работает с минутными лагами.

Но работает!

НЛО прилетело и опубликовало эту надпись здесь

Давайте тогда спросим у коллег из Т-Банка, какое соотношение у них между аудиторией PWA и нативного приложения. И заодно уточним, зачем они при «прекрасно работающем PWA» продолжают публиковать в App Store больше фейковых приложений, чем кто-либо другой на рынке.

НЛО прилетело и опубликовало эту надпись здесь

Проблема надуманная, неужели нельзя запроектировать API таким образом, чтобы на горизонте нескольких лет не требовалось обновление приложения? API для базовой функциональности можно вообще запроектировать один раз и не менять годами.

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

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

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

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
www.rshbdigital.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия