Реестр, а не код
Модератор RuStore отклонил нашу первую версию ConOmni одной фразой: юрлицо должно быть зарегистрировано как оператор персональных данных, со ссылкой на профиль Роскомнадзора. Мы этого не ждали. Ни один магазин раньше так прямо об этом не спрашивал.
Реестр нужно проверить до того, как соберём карточку приложения, а не после отказа. Роскомнадзор уведомляют один раз, сразу за всю организацию, а не за каждое приложение отдельно: в заявлении сразу перечисляют, для чего используют персональные данные — сервисы, сайты, кадровые документы, работу с подрядчиками. Отдельного «уведомления под RuStore» не бывает. Подать его можно электронно с УКЭП организации, тогда номер заявления известен сразу, либо через ЕСИА, тоже сразу. Есть и третий способ, бумагой через территориальное управление, но это самый долгий путь из трёх. Если своего ответственного за это в компании нет, у нас есть отдельная услуга по 152-ФЗ, которая закрывает вопрос без вашего юриста.
Согласие не там, где удобно
Второй наш отказ был не про реестр. RuStore потребовал, чтобы политика конфиденциальности и условия стояли на первом экране, когда человек только начинает регистрироваться, а мы прикрепили их на третьем: welcome, ввод e-mail, код, и только потом профиль с галочкой согласия. Формально галочка была. Модератор смотрит не на факт её наличия, а на то, где именно она стоит в сценарии.
Ошибка была наша, не магазина. У Apple похожее требование называется App Privacy и живёт отдельно: заполняется руками в веб-консоли, не через программный доступ. RuStore смотрит на сам экран приложения, что показано пользователю и в каком порядке.
Лимиты и кадры
RuStore ограничивает название приложения 50 символами: короткое описание — до 80, полное — до 4000, комментарий модератору — до 180. Каждое чувствительное разрешение приходится обосновывать в пределах 1500 символов, а сами разрешения выбирают из справочника на 38 типов данных. В первой карточке ConOmni набралось шесть пунктов из этого справочника: идентификатор устройства, файлы, e-mail, идентификаторы пользователей, переписка внутри приложения, отчёты об ошибках. В повторной подаче того же приложения список вырос до десяти, в другом нашем приложении, посерьёзнее по функциям, до шестнадцати. Промахнулся мимо лимита символов: карточка не сохраняется, а не «сохраняется с обрезкой». Скриншоты магазин принимает в соотношении от 9:16 до 16:9, не 9:20, как у большинства современных экранов, и кадр телефона в итоге приходится вписывать в старый прямоугольный макет.
Отдельная тема: iPad. Если приложение заявляет, что работает на планшете, магазин требует свой комплект скриншотов под этот размер, а не растянутую версию телефонных. Мы сперва собрали билд с флагом поддержки iPad, не имея ни одного кадра под планшет, и в итоге пересобрали его без iPad вовсе. Комплект под iPad 13″ появился только в следующем релизе: пять кадров 2732×2048.
Отклонённая версия не передаёт следующей ничего: когда подавали повторно, категории, теги, разрешения и комментарий модератору пришлось вписывать заново, все пять шагов мастера с нуля.
Ночь у одних, дни у других
В половине двенадцатого ночи мы отправили версию в Apple. К одиннадцати утра статус был «Готово к продаже»: между подачей и появлением в сторе прошло меньше двенадцати часов. RuStore в эти сроки не укладывается: по нашему опыту и по собственному ранбуку магазина модерация занимает один-три дня.
Аккаунт разработчика решает не скорость, а то, кому приложение принадлежит в сторе. App Store и Google Play мы публикуем с нашего аккаунта: завести Apple Developer на российское юрлицо сейчас практически нельзя. RuStore, наоборот, с самого начала оформляют на клиента: в кабинет там входят через VK ID, и держателя можно поменять в разделе «Доступы», просто привязав нужный VK ID. Перенести приложение на аккаунт клиента, когда мы заканчиваем работу, звучит как формальность, но работает только если такой аккаунт у клиента уже есть; если нет, версию снимают с публикации, а материалы передают. Что входит в такую подписку на мобильное приложение и сколько это стоит, есть в отдельной статье: публикация и обновления в трёх магазинах входят в неё, отдельно за это не платите.
Ключ доступа к API RuStore теперь тоже выдаётся не на разработчика, а на конкретное приложение конкретного юрлица: ключ от одного нашего приложения не подходит к другому, даже если оба лежат в одном кабинете.