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

В 2022 году банки и финтех уже сталкивались с блокировками в App Store и Google Play и потеряли 21,5 млрд долларов на этом. Это были смутные времена, когда было совсем непонятно, как вернуть аудиторию и продолжать развивать приложения.
Сейчас гайки закручивают всё больше, а бизнес продолжает находить решения. Компании используют несколько стратегий, чтобы публиковать приложения на iOS и удерживаться там подольше. Рассказываем, как это делают.
Кому грозят блокировки
Как пишет CNews, теперь публиковать нельзя не только финтех-приложения, но и внутренние сервисы компаний. Apple закрыли доступ к платформе для разработки бизнес-приложений Apple Developer Enterprise Program (ADEP). И не просто закрыли, а отключили все уже опубликованные там приложения.
Как работает ADEP. Платформа используется для двух целей:
Распространения внутренних приложений среди сотрудников.
Тестирования разрабатываемых приложений внутри компании, когда недостаточно обычного аккаунта разработчика с его лимитами.
Например, компания создаёт корпоративное приложение — для контроля качества работы или для отчётности. Оно не появляется в App Store, но его можно «раздать» определённым пользователям — сотрудникам.

Отключение таких приложений — следующий этап «закручивания гаек». Предыдущими были блокировка банковских и финтех-приложений. Что же будет следующим шагом и кому готовиться к блокировке? Александр Чаусов, техлид iOS-разработки в Surf, делится своим мнением:
«Готовиться можно всем. Пока ничего не предвещает беды, но всегда существует вероятность, что App Store может спонтанно решить затронуть ритейл или фудтех и просто удалить приложения. Радует одно — обычно площадка предупреждает заранее, но может и не сделать этого. И тогда — прощайте, пользователи с айфонами.
Для тех, кому важно тестирование внутренних сервисов, подойдут и Android-девайсы. Там можно расшарить apk-файл вообще без сторов, в отличие от iOS. И наличие российских сторов никак на ситуацию не влияет. Если вам без iPhone и iPad никак, или вы использовали ADEP для распространения тестовых сборок и обхода лимита девайсов — увы, стоит подумать о другом решении. Жить можно, но теперь будет неудобно и придётся искать обходные пути— как когда с рынка уходит мягкая и удобная Zewa и остаётся пользоваться залежавшейся газетой.»
С 2022 года компании уже придумали варианты, как обойти блокировки и достучаться до аудитории с iPhone и iPad. Есть два самых популярных решения, которые используют крупные банки и финтех. Другим сферам это тоже пригодится.
Стратегия №1. Клоны приложений и обфускация кода: бесконечная битва
Чтобы App Store не блокировал приложения российских кредитных организаций, банки создают клоны, или фейковые приложения, которые не связаны с кредитами.
Вот как это работает:
Разработчики делают «маскировочное» приложение — интернет-магазин или хобби-сервис. Тут можно дать фантазии разыграться.
Выкладывают его в сторы и проходят основные проверки.
В коде связывают его с основным приложением и включают «флажок» фейкового сервиса.
Когда проверка App Store завершается, разработчики выключают «флажок» и на месте фейка появляется приложение банка.
Пример. Россельхозбанк считает надои
«Учёт надоев» — клон оригинального приложения Россельхозбанка: дизайн по брендбуку банка, а корова встречает пользователей при запуске. Туда можно добавить имена своих коров на ферме и следить за их здоровьем. Очень похоже на мобильные игры, когда нужно развивать ферму.

Вот как всё устроено: когда пользователь первый раз запускает приложение, система просто предлагает ввести логин и пароль. Тут-то и зарыт клад: вводим данные от старого приложения Россельхозбанка и открывается банковский интерфейс. Приложение прошло проверки и пока держится в App Store. Схема выглядит просто, но на деле требует нескольких месяцев командной работы.
Как мы залили приложение банка под NDA на iOS
Нашего клиента заблокировали на iOS в 2023 году. Мы знали, что должны разработать приложение-клон, как делают другие банки. Вопрос был в том, как пройти модерацию в App Store.
Выяснили, что при публикации разработчики должны показать, что приложение полностью соответствует заявленной функциональности. То есть просто сменить название и описание недостаточно — модераторы распознают попытку обойти требования.
Вот что мы сделали:
Продумали наполнение фейкового приложения. Решили сделать сервис для хранения дисконтных карт разных магазинов. Для этого сделали фейковую часть приложения на платформе Firebase. Использовали Feature Flag, чтобы скрыть реальную функциональность. Работает это так: включаем «флаг» перед проверкой приложения и оно показывает сервис для хранения дисконтных карт разных магазинов. Когда проверка пройдена, мы выключаем «флаг» и приложение превращается в банковское.
Скрыли весь код от администрации площадки. Мы «запутали» код, чтобы он выглядел непонятно для внешних проверок, но при этом работал точно так же. Например, заменили все подозрительные слова (bank, credit, payment) на нейтральные (store, bonus card, order). Также переименовали классы, методы и модули, чтобы они не походили на те, которые были в заблокированных ранее приложениях. В итоге получился целый словарь новых названий.
Раньше разработчики шифровали строки прямо в исходном файле, и это создавало проблемы: строки становились нечитаемыми (например, «Ключ» = [12, 23, 345, 12, 456, 567, 23]). Для работы с ними пришлось бы создавать отдельный GUI-клиент для расшифрки.
Мы нашли более простое решение: автоматизировали процесс с помощью скрипта. Перед сборкой релизной версии (release) этот скрипт шифрует все строки. Внутри приложения добавлена логика: если запущена отладочная версия (debug), строки выводятся как есть, а в релизной — расшифровываются. Это позволяет разработчикам комфортно работать с читаемым кодом, а проверяющим видеть только зашифрованные данные. Можно быстро изменить ключ шифрования, чтобы обновить защиту.
Пользователи по-прежнему могут переводить деньги или оформлять кредиты, но для App Store и других площадок наш код выглядит как «небанковский». Так мы снижаем риск анализа и блокировки приложения.
Прошли проверки permissions. Например, разрешение на геолокацию для отображения ближайших отделений банка или оплату квитанции. С одной стороны, они должны быть достаточно нейтральными, чтобы не раскрыть банковские фичи приложения перед проверяющими. С другой — оставаться понятными и логичными для реальных пользователей. И при этом мы должны рассказать, для чего используется тот или иной permission, к каким данным на устройстве он обращается.
Наша задача — сформулировать универсальные тексты. Например, «Разрешите доступ к камере для сканирования различных кодов и упрощения взаимодействия с приложением». Ничего не понятно, но вроде все логично. Вот что мы скрыли и как:
Доступ к геопозиции. Внедрили карту для контакта с GPS и отображения ближайших магазинов. При запросе разрешения отображается Google-карта с ближайшими магазинами. Их названия совпадают с названием выбранной карты. Например, пользователь видит магазины Пятёрочки поблизости.
Доступ к камере. Она нужна для верификации пользователя или для оплаты по QR-коду. Но это же может раскрыть настоящее приложение. Мы это замаскировали: когда пользователь тапает на кнопку «Сделать фото», приложение отображает сканер или галерею фотографий.
Доступ к контактам. На экране добавления карты добавили поле «Телефон магазина». Пользователь нажимает на него и вводит номер вручную или выбирает из списка контактов.
Доступ к Face ID для быстрого входа в приложение. В приложении на экране «Мои карты» добавили кнопку настроек. Пользователь нажимает на неё и переходит на экран «Безопасность». На нём задаёт код для входа в приложение или подключает Face ID.
Сделали грузинский аккаунт разработчика. И спустя несколько дней после релиза приложения оставляем его только в «грузинском» сторе. А для пользователей сделали инструкции, как поменять регион своего Apple ID и найти приложение. Это уменьшает шансы блокировки аккаунта: большинству пользователей лень выполнять эти действия, что снижает общую активность. Даже если кто-то скачает приложение, оставить отзыв или поставить оценку станет значительно сложнее, так как это требует повторного изменения региона.
С помощью таких усложнений мы избегаем взрывного количества скачиваний за короткий промежуток после релиза. Для App Store это выглядело бы подозрительно.
Бонусный вариант. Релиз можно проводить и по-другому:
Создаёте ферму аккаунтов — можно автоматически или руками разработчиков.
Выкладываете клон в App Store.
Скачиваете на эту ферму нужные приложения.
Закрываете приложение для распространения в сторе, чтобы не удалили.
Отдаёте пользователям креды от аккаунтов разработчиков. Они логинятся под аккаунтом и скачивают приложение, а затем меняют аккаунт на свой. Принцип здесь простой — всё уже скачанное остаётся доступным пользователю всегда.
Результат. В итоге за восемь месяцев разработали приложение и опубликовали его в App Store. Приложение проработало более года до очередной блокировки App Store. За это время мы сэкономили около 2 млн рублей и сократили сроки разработки на шесть месяцев.

Progressive Web Applications: делаем вид, что настоящие
Альтернатива классическому приложению на iOS — Progressive Web Application. Проще говоря, мобильная версия сайта. Этот подход используют ВТБ, Т-Банк или Сбер, потому что:
Сайт охватывает всю аудиторию. Для использования веб-версии нужен только браузер, а операционная система и тип устройства не важны.
Обновления загружаются сразу у всех. Не нужно ждать, пока пользователь обнаружит и установит очередной апдейт.
Сайт не принадлежит ни Apple, ни Google. Удалить что-либо с сайта банка может только банк.
Не отличить от обычного iOS-приложения. Для пользователя сервис выглядит как полноценное приложение: он устанавливает его на устройство, нажимает на иконку, и оно открывается в отдельном окне, а не в браузере
При этом PWA можно преобразовать в приложение и загрузить в App Store, делая вид, что оно изначально там и было. Apple, правда, уже давно стали распознавать PWA или их аналоги и блокировать их, как происходит со Сбером. Вот что советует Кирилл Давыдов, тимлид iOS-разработки в Surf:
«Создать PWA на первый взгляд дешевле — вы не тратите время на разработку отдельных приложений. Но здесь важно понять, насколько удобно вашим пользователям будет такое приложение. Если им не лень зайти и один раз скачать его с сайта, и при этом они будут довольны качеством PWA-версии, то это действительно разгрузит ваш бюджет.»
Мы в Surf создали пробник PWA для банков. Его можно открыть прямо сейчас с компьютера или с телефона и попробовать на себе: оценить удобство и дизайн. Попробовать PWA (не клей) можно здесь.

PWA открывается через любой удобный браузер с некоторыми нюансами. Для просмотра с iPhone его лучше открывать в Safari и сохранять себе при помощи кнопки «Домой». На Android-устройствах советует использовать браузер Chrome и кнопку «Добавить на домашнюю страницу». Другие браузеры тоже можно использовать, но без сохранения на устройство.
Пример, как ещё можно залить приложение некредитной организации в App Store
Если приложение не предлагает кредитные услуги, то порой приходится доказывать это площадке на бумаге. Так у нас было с необанком ROWI. Он создал приложение SellPlus — факторинговый сервис для выдачи будущей выручки селлерам на маркетплейсах. То есть формально это не кредит, а заём. За это мы решили зацепиться и вот что сделали для релиза:
Собрали более 50 страниц документов, чтобы объяснить App Store разницу между факторингом и кредитами. Для этого показали аналогичные сервисы в сторах.
Готовили сборку и подавали на рассмотрение каждый месяц. Да, раз за разом проходили проверку дизайна и скорости работы заново.
В итоге за целых шесть месяцев App Store одобрили публикацию. Уже почти год SellPlus можно скачать на iOS напрямую из стора — и его не блокируют.

Когда App Store не нужен
Если для бизнеса релиз на App Store слишком затратен, проще создать отдельное приложение, которое не нужно выкладывать в зарубежные сторы. Тут есть пара вариантов:
PWA-приложения, о которых уже говорили. Для пользователей они обновляются автоматически и не требуют дополнительных скачиваний.
Отдельное нативное приложение для Android, которое можно будет выкладывать и в других сторах. Российская аудитория сейчас уже привыкла к RuStore, Huawei AppGallery или Galaxy Store. Можно публиковать приложения там и экономить на разработке стратегий для обхода.
Apk-файлы — классическое решение для многих банков. Пользователи могут скачать такой файл с сайта.
Создать сразу несколько вариантов приложений для разных площадок на кроссплатформе. То есть разработчики один раз пишут код, а вы получаете три в одном. Так мы сделали концепт необанка для мобильных устройств, десктопа и веба.
Александр Чаусов, техлид команды iOS-разработки в Surf, советует не забывать про App Store и поддерживать приложение на нём:
«Если у вас уже есть приложение на iOS, то зачастую проще и дешевле хотя бы лениво, но поддерживать его, чем полностью забросить. Потому что когда лет через N санкции закончатся, вам придётся практически с нуля осваивать площадку и искать дорогих senior-разработчиков, которые смогут разобраться в коде 10-летней давности. Ну и переделывать старое приложение под новые условия Apple.»
Что советуем делать
App Store — загадочная площадка, которая не до конца раскрывает свои алгоритмы проверки. Знать их все невозможно, и иногда бывает ощущение, что модератор просто встал не с той ноги. Поэтому вот что советуем, чтобы блокировки не были для вас неожиданностью:
Постоянно отслеживайте изменения и новости: обычно все самое интересное происходит у крупных компаний. Поэтому всегда есть время подготовиться и успеть отреагировать.
Информируйте пользователей: предупреждайте об изменениях, чтобы повысить их лояльность; давайте инструкции, как перейти на другие способы пользоваться приложением; подключайте поддержку для помощи.
Стройте сильную команду: если берёте в инхаус айосников, на собеседованиях спрашивайте про их опыт релиза и особенности площадки; если нанимаете аутсорс, узнавайте об их опыте блокировок. Прямые вопросы помогут в этом как ничто другое.
Как вы поняли, мы умеем релизить то, что App Store блокирует. Мы пишем больше о хитростях мобильной и веб-разработки в нашем телеграм-канале.