Как я доказывал Google, что мне нужны данные юзеров, но я не скамер

Привет! Я Влад, Android-разработчик. Три года я делаю корпоративное приложение банка Alfa People. В перерывах играю в футбол и Elden Ring и выращиваю на подоконнике острый перец. 

Это я, бью по мячу, чтобы не «бить» асессоров

Это я, бью по мячу, чтобы не «бить» асессоров

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

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

Как получить доступ к метрике шагов в Google: ожидание

Итак, я готовлю релиз по стандартной схеме. Настаёт черёд подключать API Google Fit, чтобы знать, кто как проходит спортивный челлендж в приложении. 

Список доступных API

Список доступных API

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

Согласование секьюрного доступа застряло

Согласование секьюрного доступа застряло

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

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

Google, поделись, пожалуйста, данными о шагах, а мы зашьём согласие в User policy

Google, поделись, пожалуйста, данными о шагах, а мы зашьём согласие в User policy

Я представлял себе процесс получения данных о шагах так:

  1. Я как владелец приложения прошу Google выдать мне доступ к метрике пройденных юзером шагов.

  2. Я в момент вступления в челлендж Alfa Energy в приложении прошу юзера разрешить доступ к его данным, а именно — к количеству шагов из Google Fit. Если Google Fit у юзера ещё не установлен — предлагаю установить его из стора.

Уже на первом этапе я забуксовал, получая разрешение от Google, поэтому родилась эта статья. Конечно же, я знал, что нужна какая-то проверка. Я добавил под это дело 3 дня, а дальше рассчитывал выйти в прод, в первый раз что ли?  

«Зачем вам эти персональные данные?»: ассессмент Google

Я допиливаю функционал и параллельно отправляю своё творение на проверку в Google, думая, что всё изи-пизи. И вот тут-то запахло жареным. Google вместо выдачи разрешения на метрику шагов начинает сыпать сообщениями из разряда:, а кто вы, а что вы, а где лендинг, юзер полиси?

Уже идёт тестовый челлендж, до старта на всех юзеров не более двух недель, и вот за 10 дней до выхода в прод нам говорят, что мы прошли первый этап. Мы такие: «Ура, первый этап пройден! Стоп, в смысле первый?».  

1f21bf0c036cdc33f8a4798559bc70ca.png

Да, оказалось, что этапов проверки в Google два, а не один, как я планировал. Причём второй этап — это просто соулс-лайк битва с боссом, где ты эльф первого уровня, а перед тобой Зверь — хранитель Элдена. 

Тут завершается тестовый челлендж, и мы плавно перетекаем в прод. Вернее, iOS плавно перетекает в прод, а у меня начинаются вот такие диалоги с продактом:

— Влад, что там с юзерами на Андроид? Что с проверкой?

— Да всё нормально, думаю, будет небольшой диаложек с Google, а так пока идём в прод без ограничений.

68f344b768ccbcd7024dbcf6b90a2ff4.png

Далее в запланированные даты выходит тизер Alfa Energy на всех сотрудников, а это несколько тысяч человек. Я всё ещё верю, что релиз не затормозится, и отсылаю Андроид-функционал на проверку в CASA.

Что такое CASA и при чём тут Google

CASA (Cloud Application Security Assessment) — это ребята, которые встраиваются в процесс релиза приложения по поручению Google и проверяют подключенные к вашему приложению API. В моём случае таким API был Google Fit. Решениям CASA доверяет Google: если CASA говорит: «Всё секьюрно», значит ваш релиз выходит без ограничений (тизер: проверяют они чисто на словах, по ощущениям).

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

a0d16ab64e609c97ea7671450db40ca4.png

Оказывается, пока CASA проверяет функционал, мы можем подключить метрику только 100 пользователям, потому что функционал находится в тестовом режиме. А мы и не знали! То есть нам как бы говорят: «Ну, мы ещё проверяем приложение, поэтому подсветим юзерам, что оно небезопасное». 

Пока Google проверяет функционал, доступ к нему возможен, но есть нюанс

Пока Google проверяет функционал, доступ к нему возможен, но есть нюанс

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

Такой экран видели пользователи Андроид, когда регистрировались в челлендже после сотого участника

Такой экран видели пользователи Андроид, когда регистрировались в челлендже после сотого участника

У меня происходит ещё один увлекательный диалог с продактом:

— Влад, что происходит?

— Пу-пу-пу, оказалось, можно запустить всего 100 юзеров на время проверки CASA.

— %$#! И когда нас проверят?

— Написано, дедлайн — 28 февраля следующего года.

— Но сейчас ноябрь, и мы уже в проде. Что там за проверка такая, на которую даётся три (!) месяца?

b64e97adf61ee61efd477db3cc7dd42a.png

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

Скрин с доки CASA, переведённой автоматическим транслейт-плагином 

Скрин с доки CASA, переведённой автоматическим транслейт-плагином 

После этого нам пришёл глоссарий с примерно сотней вопросов, в которых надо пояснить за уязвимости, помеченные как High. Вопросы такого плана: «Кэшируете ли вы данные юзера?». Варианты: да, нет, N/A. Если ответ не нравится проверяющему, он пишет нам в профиль. Этап с перепиской напоминает эпичное сражение ситхов и джедаев. 

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

feade7428f3fed8c9590e444d36f956d.png

Как я общался с CASA и вспоминал английский

Теперь самое интересное — увлекательные переписки с CASA. Я с профиля приложения (а там фото CTO Маши) каждый день отвечаю по деталям функционала, вспоминая технический английский и составляя обоснования.

Пример письма CASA. Мы так долго общались, что я гуглил контакт из подписи (скорее всего, имя индийское)

Пример письма CASA. Мы так долго общались, что я гуглил контакт из подписи (скорее всего, имя индийское)

У меня английский B2, читаю нормально, но выражать свои мысли в письме мне бывает сложно. Думаю, именно поэтому мы с асессором Soumi так хорошо друг друга понимали.

e596ee4544b98466d8104d28196e42ca.jpeg

Ребята в команде Alfa People разгоняют новый MVP под следующий спортивный челлендж. У меня дёргается глаз, потому что степень непонятности с проверкой, как у новой модели «АвтоВАЗа»: вроде, будет, а когда — непонятно.

Один из «завтраков» проверяющих после недель ожидания

Один из «завтраков» проверяющих после недель ожидания

Я словил жёсткий тильт и посыпание головы пеплом. Честно, я был готов ручками проставлять целый месяц шаги от пары тысяч сотрудников (ну, или скриптом), но всё же обработать данные. Тем временем челлендж завершился для iOS-пользователей и 100 счастливчиков на Андроид. Плавно и нервно мы подходили к дедлайну проверки CASA в статусе факапа.

Наступил февраль 2024, я всё ещё финалил ответы по вопросам из глоссария CASA, попутно переделывая код. Счёт итерациям уже потерян, остаётся надеяться на заветную дату. На протяжении трёх месяцев я так и не понимал, одобрят ли нам всё это, и что нас ждёт после CASA.

66e24d8bfe6dcb08c1e200b13cb35054.png

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

«Влад, чё, когда?», «Влад, они ответили?» — эти фразы я слышал даже во сне. Все три месяца, с конца ноября до 27 февраля, я общался по глоссарию с CASA. Пинал ли я проверяющих все 3 месяца? — Боюсь, у бедного Soimi для меня уже была личная папочка (спам). 

Это я, воодушевлён общением с асессорами

Это я, воодушевлён общением с асессорами

28 февраля, в день дедлайна, наш глоссарий согласовали и передали на следующий этап ревью — лё шанс финаль. Я открываю почту, и там сабмит! CASA визирует для Google, что все моменты обсуждены, вопросов к нам нет.

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

Мы как будто нахрапом проходим сразу два этапа. Что это значит: отмена тестовых пользователей, лимит в 100 юзеров снят, но всё ещё висит вопрос, что же будет с расширенными скоупами.

42a4ec526f963fb226b396c4ba263dec.png

Тут есть нюанс: если мы захотим трекать не только шаги, но и дистанцию, скорость — это отдельные скоупы, на которые нужны разрешения Google. Тогда меня снова ждёт круг по Золотому кольцу Индии, и я напишу статью «Как за две недели освоить хинди до C1».

Что советую коллегам по Андроиду по ассессменту Google

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

  2. Не зарекайтесь ни от каких проверок. Ещё полгода назад я даже не думал, что мне в HR Tech банка понадобится ассессмент по API Google Fit. Помните, фантазия стейкхолдера безгранична.

  3. Готовьте план B, а лучше даже C. Никто не добавит вам целый квартал на проверки функционала (а у меня реально ушло 3 месяца на ассессмент), но вы должны понимать, что предложите команде, если согласование забуксует.

  4. Хоть кто-то из команды должен владеть техническим английским от B2, чтобы общаться с представителями платформ и сторов. Вложения в репетитора точно отобьются, если вы хотите развивать карьеру в мобильной разработке.

  5. Подумайте на пару шагов вперёд и отправьте на проверку функционал на вырост. Лучше сразу затащить дополнительные скоупы, условно, на MVP уровня 2–3, чем страдать так же, как я, да ещё при каждом обновлении.

Спасибо за внимание всем, кто дочитал. Буду рад, если в комментариях поможете с вопросами по ассессменту в Google: проходил ли кто Huawei Health (а может, и сбор данных из Google Fit)? Ну, и стоит ли переходить с Google Fit на бета-версию гугловского Health?

© Habrahabr.ru