Сначала цифры: для среднего листинга требуется
- скриншоты в четырёх-пяти разных разрешениях для каждого магазина
- одна иконка, отрендеренная в восьми и более размерах
- список разрешений, который может превышать десяток пунктов для всего, что связано с контактами или геолокацией
- одна анкета о конфиденциальности с десятками вариантов ответа да/нет, от которой зависит, отклонит ли рецензент ваше приложение в первый же день
Умножьте это на три магазина — Play, App Store, страницу дополнения Firefox, если вы выпускаете расширение — и вы получите три вечера обрезки скриншотов и заполнения форм для приложения, которое уже готово. Это ещё скучная часть.
Каждая сборка, предназначенная для магазина, получает автоматически сгенерированный комплект для листинга, созданный, чтобы закрыть тот самый разрыв — между тем, что разработчик задумал для приложения, и тем, что реально делает собранный бинарник.
Остальная часть комплекта — самое простое
- Скриншоты делаются с реального работающего приложения, а не с макетов — компонуются, подгоняются под требования каждого магазина, снабжаются подписями там, где это требуется форматом.
- Иконки рендерятся во всех размерах, требуемых магазином, плюс любая промографика или графика для функций, которую требует магазин.
- Текст листинга — название, краткое и полное описание — пишется на основе того, что приложение действительно делает, что звучит очевидно, пока вы не начитаетесь листингов App Store, состоящих сплошь из нагромождения прилагательных.
- Обоснования разрешений генерируются для каждого разрешения в формате, которого требует магазин.
Ничего из этого не сложно, по сути. Просто достаточно утомительно, чтобы это пропускали или делали быстро и неправильно.
Где особенно строго: анкета о конфиденциальности
Вот момент, где легко ошибиться даже при благих намерениях. Вы создаёте приложение, вполне уверены, что оно ничего не собирает, отмечаете «данные не собираются» в анкете и двигаетесь дальше. Но три недели назад вы подключили SDK для отчётов о сбоях и забыли об этом, или аналитический вызов проскользнул через обновление зависимости. Теперь ваш листинг говорит одно, а бинарник делает другое — это либо непреднамеренная ложь пользователям, либо быстрый способ получить отметку при проверке, и ни то ни другое не хорошо.
Поэтому комплект не принимает это на веру. Он сканирует реальный исходный код приложения перед тем, как дать ответ: заявление «не собирает данные» делается только тогда, когда в коде нет сетевых вызовов и не подключена аналитика. Если приложение всё же «звонит домой», декларация укажет это — точно, независимо от того, лестно это или нет. Мы предпочитаем, чтобы листинг был честным, а не выгодным для себя. И, что не случайно, именно такая версия проходит проверку, потому что рецензенты проверяют то же самое, что проверяет сканирование.
Заполнено, а не просто подано
Там, где магазин предоставляет API, комплект отправляет листинг напрямую, без участия человека. Там, где магазин настаивает на своей собственной консоли, комплект автоматизирует заполнение форм, оставляя вам лишь те немногие клики, которые магазин резервирует за человеком.
| Магазин | Как комплект доставляется |
|---|---|
| Firefox (дополнения) | Полностью автоматизировано, без участия человека — изображения, тексты, декларации отправляются через API |
| Google Play | Автоматическое заполнение форм; вам остаётся только нажать финальные подтверждения, зарезервированные магазином |
| Chrome Web Store | Автоматическое заполнение форм; вам остаётся только нажать финальные подтверждения, зарезервированные магазином |
Полный разбор по каждому магазину — в статье От запроса до магазина приложений.



