Привет! Я Влад, Android-разработчик. Три года я делаю корпоративное приложение банка Alfa People. В перерывах играю в футбол и Elden Ring и выращиваю на подоконнике острый перец.
![Это я, бью по мячу, чтобы не «бить» асессоров Это я, бью по мячу, чтобы не «бить» асессоров](https://habrastorage.org/getpro/habr/upload_files/01d/437/ae7/01d437ae77a047b4ef379063debdd4cb.png)
Сегодня поделюсь темой, из-за которой я фрустрировал три месяца, столько же общался с проверяющими из около-гугловой компании, наблюдая, как наше приложение теряет баллы в сторе. Речь пойдёт про спортивный челлендж. Именно так, вы не ослышались. Однажды мы пригласили сотрудников посоревноваться в количестве шагов. Согласовали дизайн челленджа, выбрали название — Alfa Energy, раздали задачи продуктовой команде.
На мне, как обычно, была реализация этого функционала на Андроид в паре со вторым разрабом. А я всегда говорил: хочешь спокойствия — выбирай Айфон, хочешь веселья — Андроид.
Как получить доступ к метрике шагов в Google: ожидание
Итак, я готовлю релиз по стандартной схеме. Настаёт черёд подключать API Google Fit, чтобы знать, кто как проходит спортивный челлендж в приложении.
![Список доступных API Список доступных API](https://habrastorage.org/getpro/habr/upload_files/334/9ba/ff8/3349baff8fe8b137563416c7bf8c0bf4.png)
Получаю первичное одобрение от Google, а значит можно использовать скоупы. Теперь-то я понимаю, что Андроид пытается стать очень секьюрным, посмотрев на своего американского брата, и местами это выходит боком. Выясняется, что я не могу просто взять и подрубить счётчик шагов к своему приложению, Google против.
![Согласование секьюрного доступа застряло Согласование секьюрного доступа застряло](https://habrastorage.org/getpro/habr/upload_files/ae9/7e3/4da/ae97e34dac757985feb89eb2803e8e62.png)
Вы знали, что телефон и так каждый день считает шаги, даже если вы его об этом не просили? Вообще всегда знает геолокацию? Но делиться этими данными с приложениями из его же стора Google не спешит.
Данные бывают разные, для некоторых, конечно, нужны правила повышенной безопасности: для ФИО, даты рождения, роста, веса, клички кота. Мы хотели получить метрику шагов, причём с согласия пользователя — просто знать, сколько вы проходите за месяц, пока идёт челлендж. Не чтобы рекламировать кроссовки, не чтобы давать гиги за шаги. Просто шаги, пожалуйста.
![Google, поделись, пожалуйста, данными о шагах, а мы зашьём согласие в User policy Google, поделись, пожалуйста, данными о шагах, а мы зашьём согласие в User policy](https://habrastorage.org/getpro/habr/upload_files/74f/99f/46f/74f99f46f98acdb8bdf3b0d334918c44.png)
Я представлял себе процесс получения данных о шагах так:
Я как владелец приложения прошу Google выдать мне доступ к метрике пройденных юзером шагов.
Я в момент вступления в челлендж Alfa Energy в приложении прошу юзера разрешить доступ к его данным, а именно — к количеству шагов из Google Fit. Если Google Fit у юзера ещё не установлен — предлагаю установить его из стора.
Уже на первом этапе я забуксовал, получая разрешение от Google, поэтому родилась эта статья. Конечно же, я знал, что нужна какая-то проверка. Я добавил под это дело 3 дня, а дальше рассчитывал выйти в прод, в первый раз что ли?
«Зачем вам эти персональные данные?»: ассессмент Google
Я допиливаю функционал и параллельно отправляю своё творение на проверку в Google, думая, что всё изи-пизи. И вот тут-то запахло жареным. Google вместо выдачи разрешения на метрику шагов начинает сыпать сообщениями из разряда: а кто вы, а что вы, а где лендинг, юзер полиси?
Уже идёт тестовый челлендж, до старта на всех юзеров не более двух недель, и вот за 10 дней до выхода в прод нам говорят, что мы прошли первый этап. Мы такие: «Ура, первый этап пройден! Стоп, в смысле первый?».
![](https://habrastorage.org/getpro/habr/upload_files/1f2/1bf/0c0/1f21bf0c036cdc33f8a4798559bc70ca.png)
Да, оказалось, что этапов проверки в Google два, а не один, как я планировал. Причём второй этап — это просто соулс-лайк битва с боссом, где ты эльф первого уровня, а перед тобой Зверь — хранитель Элдена.
Тут завершается тестовый челлендж, и мы плавно перетекаем в прод. Вернее, iOS плавно перетекает в прод, а у меня начинаются вот такие диалоги с продактом:
— Влад, что там с юзерами на Андроид? Что с проверкой?
— Да всё нормально, думаю, будет небольшой диаложек с Google, а так пока идём в прод без ограничений.
![](https://habrastorage.org/getpro/habr/upload_files/68f/344/b76/68f344b768ccbcd7024dbcf6b90a2ff4.png)
Далее в запланированные даты выходит тизер Alfa Energy на всех сотрудников, а это несколько тысяч человек. Я всё ещё верю, что релиз не затормозится, и отсылаю Андроид-функционал на проверку в CASA.
Что такое CASA и при чём тут Google
CASA (Cloud Application Security Assessment) — это ребята, которые встраиваются в процесс релиза приложения по поручению Google и проверяют подключенные к вашему приложению API. В моём случае таким API был Google Fit. Решениям CASA доверяет Google: если CASA говорит: «Всё секьюрно», значит ваш релиз выходит без ограничений (тизер: проверяют они чисто на словах, по ощущениям).
Итак, спортивный челлендж в корпоративном приложении стартует. Наплыв людей в первый же день, шутки в рабочих чатах про имбу по шагам у специалистов по доставке карт, айтишники обсуждают рут, скрипт, автотрекинг для читерских побед. И тут мы получаем десятки сообщений, что люди не могут зарегистрироваться. П-А-Н-И-К-А.
![](https://habrastorage.org/getpro/habr/upload_files/a0d/16a/b64/a0d16ab64e609c97ea7671450db40ca4.png)
Оказывается, пока CASA проверяет функционал, мы можем подключить метрику только 100 пользователям, потому что функционал находится в тестовом режиме. А мы и не знали! То есть нам как бы говорят: «Ну, мы ещё проверяем приложение, поэтому подсветим юзерам, что оно небезопасное».
![Пока Google проверяет функционал, доступ к нему возможен, но есть нюанс Пока Google проверяет функционал, доступ к нему возможен, но есть нюанс](https://habrastorage.org/getpro/habr/upload_files/e53/ca5/fba/e53ca5fba2a6fce80e2d718eaddd124c.png)
Юзеры от 101-го и дальше получают сообщение, что доступ к приложению заблокирован. На самом деле доступ есть, просто капасити исчерпалось.
![Такой экран видели пользователи Андроид, когда регистрировались в челлендже после сотого участника Такой экран видели пользователи Андроид, когда регистрировались в челлендже после сотого участника](https://habrastorage.org/getpro/habr/upload_files/c18/a56/1d2/c18a561d2bfd37d62d0245429cc10308.png)
У меня происходит ещё один увлекательный диалог с продактом:
— Влад, что происходит?
— Пу-пу-пу, оказалось, можно запустить всего 100 юзеров на время проверки CASA.
— %$#! И когда нас проверят?
— Написано, дедлайн — 28 февраля следующего года.
— Но сейчас ноябрь, и мы уже в проде. Что там за проверка такая, на которую даётся три (!) месяца?
![](https://habrastorage.org/getpro/habr/upload_files/b64/e97/adf/b64e97adf61ee61efd477db3cc7dd42a.png)
А дела с проверкой обстояли так. Наше приложение CASA прогоняли через утилиту, которая проверяет узкие места в коде, кэширование данных пользователя, ищет легаси.
![Скрин с доки CASA, переведённой автоматическим транслейт-плагином Скрин с доки CASA, переведённой автоматическим транслейт-плагином](https://habrastorage.org/getpro/habr/upload_files/400/d6c/f74/400d6cf74db6a1e9558c36f2cd2f134d.png)
После этого нам пришёл глоссарий с примерно сотней вопросов, в которых надо пояснить за уязвимости, помеченные как High. Вопросы такого плана: «Кэшируете ли вы данные юзера?». Варианты: да, нет, N/A. Если ответ не нравится проверяющему, он пишет нам в профиль. Этап с перепиской напоминает эпичное сражение ситхов и джедаев.
В это время сотрудники трекают шаги в челлендже только на iOS. Мы получаем тонну гневных сообщений от владельцев Андроида: «Почему нельзя было затестить?», и заниженные оценки в сторе.
![](https://habrastorage.org/getpro/habr/upload_files/fea/de7/428/feade7428f3fed8c9590e444d36f956d.png)
Как я общался с CASA и вспоминал английский
Теперь самое интересное — увлекательные переписки с CASA. Я с профиля приложения (а там фото CTO Маши) каждый день отвечаю по деталям функционала, вспоминая технический английский и составляя обоснования.
![Пример письма CASA. Мы так долго общались, что я гуглил контакт из подписи (скорее всего, имя индийское) Пример письма CASA. Мы так долго общались, что я гуглил контакт из подписи (скорее всего, имя индийское)](https://habrastorage.org/getpro/habr/upload_files/2f9/391/cef/2f9391cef4567eeca988fbff8300c842.png)
У меня английский B2, читаю нормально, но выражать свои мысли в письме мне бывает сложно. Думаю, именно поэтому мы с асессором Soumi так хорошо друг друга понимали.
![](https://habrastorage.org/getpro/habr/upload_files/e59/6ee/454/e596ee4544b98466d8104d28196e42ca.jpeg)
Ребята в команде Alfa People разгоняют новый MVP под следующий спортивный челлендж. У меня дёргается глаз, потому что степень непонятности с проверкой, как у новой модели «АвтоВАЗа»: вроде, будет, а когда — непонятно.
![Один из «завтраков» проверяющих после недель ожидания Один из «завтраков» проверяющих после недель ожидания](https://habrastorage.org/getpro/habr/upload_files/38e/2e1/763/38e2e1763ad5ca007953d359558d0af7.png)
Я словил жёсткий тильт и посыпание головы пеплом. Честно, я был готов ручками проставлять целый месяц шаги от пары тысяч сотрудников (ну, или скриптом), но всё же обработать данные. Тем временем челлендж завершился для iOS-пользователей и 100 счастливчиков на Андроид. Плавно и нервно мы подходили к дедлайну проверки CASA в статусе факапа.
Наступил февраль 2024, я всё ещё финалил ответы по вопросам из глоссария CASA, попутно переделывая код. Счёт итерациям уже потерян, остаётся надеяться на заветную дату. На протяжении трёх месяцев я так и не понимал, одобрят ли нам всё это, и что нас ждёт после CASA.
![](https://habrastorage.org/getpro/habr/upload_files/66e/24d/8bf/66e24d8bfe6dcb08c1e200b13cb35054.png)
Понимаете, в чём соль, мы просим только шаги, а проходим с подрядчиком Гугла девятый круг ада, и нам это должно нравиться. Асессоры начинают отвечать реже, то ли закапываясь в наш код, то ли фрустрируя от общения с «рашн программист гёрл», но продвижения не происходит.
«Влад, чё, когда?», «Влад, они ответили?» — эти фразы я слышал даже во сне. Все три месяца, с конца ноября до 27 февраля, я общался по глоссарию с CASA. Пинал ли я проверяющих все 3 месяца? — Боюсь, у бедного Soimi для меня уже была личная папочка (спам).
![Это я, воодушевлён общением с асессорами Это я, воодушевлён общением с асессорами](https://habrastorage.org/getpro/habr/upload_files/969/578/c1a/969578c1ab8d6c502ff15bc347b6995f.jpg)
28 февраля, в день дедлайна, наш глоссарий согласовали и передали на следующий этап ревью — лё шанс финаль. Я открываю почту, и там сабмит! CASA визирует для Google, что все моменты обсуждены, вопросов к нам нет.
Радости было, как будто собрал карбюратор, а лишних деталей не осталось! Я выдаю эту новость нашим ребятам и наконец «протыкиваю» людей, которые не могли раньше записаться в челлендж. Это успешный успех!
Мы как будто нахрапом проходим сразу два этапа. Что это значит: отмена тестовых пользователей, лимит в 100 юзеров снят, но всё ещё висит вопрос, что же будет с расширенными скоупами.
![](https://habrastorage.org/getpro/habr/upload_files/42a/4ec/526/42a4ec526f963fb226b396c4ba263dec.png)
Тут есть нюанс: если мы захотим трекать не только шаги, но и дистанцию, скорость — это отдельные скоупы, на которые нужны разрешения Google. Тогда меня снова ждёт круг по Золотому кольцу Индии, и я напишу статью «Как за две недели освоить хинди до C1».
Что советую коллегам по Андроиду по ассессменту Google
После пережитого мной челленджа главный совет — запасаться терпением и предупреждать CTO, продакта, стейкхолдера и маму о крайне неопределённых сроках. Заложите сроки с запасом до выхода функционала в прод, особенно, если ваше приложение будет на ревью впервые.
Не зарекайтесь ни от каких проверок. Ещё полгода назад я даже не думал, что мне в HR Tech банка понадобится ассессмент по API Google Fit. Помните, фантазия стейкхолдера безгранична.
Готовьте план B, а лучше даже C. Никто не добавит вам целый квартал на проверки функционала (а у меня реально ушло 3 месяца на ассессмент), но вы должны понимать, что предложите команде, если согласование забуксует.
Хоть кто-то из команды должен владеть техническим английским от B2, чтобы общаться с представителями платформ и сторов. Вложения в репетитора точно отобьются, если вы хотите развивать карьеру в мобильной разработке.
Подумайте на пару шагов вперёд и отправьте на проверку функционал на вырост. Лучше сразу затащить дополнительные скоупы, условно, на MVP уровня 2-3, чем страдать так же, как я, да ещё при каждом обновлении.
Спасибо за внимание всем, кто дочитал. Буду рад, если в комментариях поможете с вопросами по ассессменту в Google: проходил ли кто Huawei Health (а может, и сбор данных из Google Fit)? Ну, и стоит ли переходить с Google Fit на бета-версию гугловского Health?