Как я преодолел отказ в модерации App Store: история приложения YoloPrice
Привет, я разрабатываю мобильное приложение YoloPrice: оно в реальном времени сравнивает цены на нужный товар во всех ведущих маркетплейсах и магазинах страны.
Когда я столкнулся с тем, что моё обновление не стала пропускать модерация, то первым делом пошёл искать информацию о том, был ли у кого-то подобный опыт, но на русскоязычных ресурсах такой информации не было, поэтому решил поделиться.
В этой статье речь пойдёт не о первичной модерации, когда приложение совсем новое. Мой кейс в том, что модерация App Store начала отклонять новые версии приложения, которое до этого спокойно существовало в App Store уже пару месяцев и имело 1000+ установок, то есть все базовые требования к приложению были соблюдены.
Возможно, кто-то мог пожаловаться на него, или попался новый модератор, истинную причину мы не узнаем, но я расскажу подробно, по каким пунктам отклоняли новые версии и как я с этими пунктами в итоге справился.
Первое столкновение с отказом
Когда я отправил на модерацию очередную версию YoloPrice 0.8.5, она была отклонена по причине использования мной логотипов известных маркетплейсов:
Guideline 4.1 — Дизайн (Copycats):
Команда App Store посчитала, что моё приложение вводит пользователей в заблуждение, отображая контент, схожий с известными платформами (Wildberries, Yandex, Aliexpress), без необходимого разрешения. Несмотря на то что YoloPrice является метапоисковиком, модераторы решили, что приложение не достаточно отличается от копий других сервисов.
Приложение или его метаданные содержат вводящие в заблуждение ссылки на сторонний контент.
В частности, приложение включает контент, напоминающий Wildberries, Яндекс, Aliexpress и другие
Мне это замечание показалось слишком строгим, учитывая, что другие метапоисковые приложения, такие как Skyscanner и HotelsCombined, уже успешно функционируют в App Store, предоставляя аналогичные услуги и отображая логотипы тех же авиакомпаний у себя.
Мои действия и корректировки
После отказа я внес изменения в описание приложения и написал пояснительное письмо для модерации, сделав упор на то, что моё приложение — классический метапоисковик, и это обозначено в Пользовательском соглашении на сайте приложения. Также, я добавил список магазинов, по которым ведётся поиск, и ссылки на них прямо в описание приложения.
Однако после этих изменений следующая версия приложения вновь получил отказ. На этот раз причиной стал Guideline 4.2.2, согласно которому приложение «не отличается от стандартного веб-браузера».
Новый отказ: Guideline 4.2.2
По мнению модераторов, функциональность YoloPrice не была уникальной и, как они указали в комментарии, «не сильно отличается от стандартного браузера». Это стало для меня неожиданностью (а точнее сказать, меня бомбило), так как опять же на другие приложения-агрегаторы этот пункт как будто бы не распространяется. Хотелось многое сказать модератору, но надо было уложиться в 4 000 символов и по делу.
Ваше приложение содержит только ссылки, изображения или контент, собранный из Интернета. Поскольку ваш контент недостаточно отличается от обычного веб-браузера, такое приложение не соответствует требованиям App Store.
Письмо с разъяснением функционала
В новом заходе на модерацию версии я написал еще одно письмо, в котором подробно разъяснил уникальные функции YoloPrice, которые сложно или невозможно реализовать в браузере:
Алгоритм метапоиска:
YoloPrice одновременно ищет продукты в 136 онлайн-магазинах через единую строку поиска. Это невозможно сделать в браузере, открыв более 136 вкладок, собирая цены на товар и ранжируя их от низкой к высокой.Машинное обучение:
Я использую фильтры машинного обучения для ранжирования товаров, что обеспечивает релевантность отображаемых предложений (например, не показывать чехлы при поиске телефона).Нейронная сеть:
Группирует идентичные продукты на основе текстов и изображений, чтобы пользователи видели компактный и организованный интерфейс, а не пролистывали по 50 одинаковых товаров.Патентованный мобильный SDK:
Вся обработка метапоиска, фильтры и нейронные сети управляются через запатентованный SDK, что делает реализацию подобного функционала в браузере невозможной. Также я предложил предоставить патентную документацию по запросу (это более 70 страниц, если что).
Однако, и это не впечатлило модератора, и я снова получил отказ, и снова по этой же причине: Guideline 4.2.2, функционал «не сильно отличается от стандартного браузера».
«Обозначенные ранее проблемы всё ещё требуют вашего внимания»
Письмо, которое всё изменило
На этом этапе я уже решил, что на крайний случай буду готов удалить приложение из App Store и заводить новый аккаунт уже от юр.лица (сейчас оно опубликовано от физ.лица).
В финальном письме я прямо сказал команде модерации, что не понимаю причину отказа, ведь если приложения вроде Skyscanner, Aviasales и HotelsCombined успешно проходят модерацию, несмотря на схожую функциональность, то почему к YoloPrice применяются другие требования?
Возможно, команде Apple хотелось бы, чтобы я использовал больше встроенных функций iOS? Этот вопрос натолкнул меня на проведение небольшого анализа, где я сравнил встроенные функции, используемые в YoloPrice и у подобных приложений:
App | Native iOS Functions |
SkyScanner | Siri & Search |
HotelsCombined | Siri & Search |
Kayak | Siri & Search, Live Activities |
Aviasales | Siri & Search, Location |
YoloPrice | Siri & Search, Push Notifications |
Я объяснил, что YoloPrice использует схожие с другими метапоисковыми приложениями функции iOS (Siri & Search, Push Notifications) и запросил детальное объяснение различий, на основании которых моему приложению было отказано. Я также подчеркнул, что у нас уже было более 1000 установок на iOS и 4000 установок на Android, и пользователи заслуживают доступа к обновленной версии приложения с улучшенной функциональностью.
Вот ключевые моменты моего последнего письма:
Сравнение с конкурентами:
Я предоставил таблицу с функциональностями других метапоисковых приложений и указал, что использование API и функций iOS в этих приложениях не сильно отличается от нашего. Это было важным аргументом в пользу того, что YoloPrice не должен рассматриваться как «обычный веб-браузер».Запрос на разъяснение:
Я попросил дать конкретные рекомендации или провести видеозвонок, чтобы обсудить, как именно моё приложение можно адаптировать для соответствия требованиям Guideline 4.2.2.Акцент на разницу в платформах:
В письме я также указал, что пользователи Android уже более двух недель успешно пользуются обновленной версией приложения, в то время как пользователи iOS лишены этой возможности, подчеркнув необходимость равноправного доступа для всех пользователей.Подозрения о необоснованности отказа:
Я прямо задал вопрос о том, не связано ли отклонение с тем, что приложение опубликовано физическим лицом или из-за гражданства владельца (Россия). Хотя это не было центральным аргументом, оно подчеркнуло возможную предвзятость в процессе модерации.
Результат: YoloPrice одобрен и новая версия доступна в App Store
Каждый раз, когда статус приложения менялся на «In Review», я смотрел, с каких ip-адресов приходят модераторы, и обычно приходил один ip-адрес из США, но в этот раз во время модерации я заметил сразу 5 ip-адресов, 4 из которых были из США, а один из Великобритании.
В ответ на это письмо команда модерации лаконично ответила: «Спасибо за предоставленную информацию, мы продолжим ревью вашего приложения», и статус версии сменился с «отказано» на «на модерации», а спустя пару часов моё приложение было успешно опубликовано в App Store.
Хэлоу, спасибо за предоставленную информацию, мы продолжим ревью вашего приложения
Я сделал вывод, что откровенное общение с модераторами, а также детальное разъяснение функций и сравнение с похожими приложениями, могут существенно повлиять на результат. Важно не просто вносить изменения, а объяснять каждое действие и находить аналогичные кейсы для примеров.
Надеюсь, что мой опыт поможет другим разработчикам при прохождении модерации, особенно если они сталкиваются с неопределёнными формулировками в отказах.