22 августа я нежданно-негаданно получила письмо от Apple, уведомлявшее меня, что у меня есть новое сообщение App Review. Оно было связано с моим приложением WorldAnimals, простенькой игрой про угадывание звуков, которые издают животные на разных языках.

Обычно сообщения приходят после отправки новой версии приложения в App Store для проверки. Проверяющий находит что-то неправильное, и ваше приложение отклоняют. В уведомлении указывается, в чём именно вы нарушили App Store Review Guidelines и как устранить проблему, чтобы обновление приложения одобрили. Например, приложение может вылетать, или проверяющий не смог выполнить логин для тестирования, или, не дай бог, в описании обновления упоминается конкурирующая платформа о которой-нельзя-говорить — всё это реальные причины, по которым отклоняли мои приложения в App Store.

Отношения между разработчиками и ревьюерами App Store можно в лучшем случае назвать натянутыми. Большинство людей пытается создавать качественно спроектированные и полезные мобильные приложения. Apple внедрила проверки App Store для обеспечения высокой планки качества приложений, защиты от спамеров и злоумышленников; компания использует живых оценщиков для тестирования приложений и предоставления прямой обратной связи. Однако зловредные приложения встречаются относительно редко; к тому же есть мнение, что Apple всё равно не очень хорошо справляется с их фильтрацией. Поэтому для подавляющего большинства разработчиков проверки App Store добавляют лишний слой трудностей и потраченного времени при выпуске обновлений. А в неизбежных случаях, когда вам нужно выпустить срочное исправление вылетов программы, происходящих у пользователей, процесс проверки App Store превращается из неудобного препятствия в настоящую баррикаду, мешающую улучшать работу ПО.

Мне кажется, асимметричность App Review по-прежнему неочевидна для Apple. Надежды и мечты (а иногда и финансовое положение) инди-разработчиков зависят от баланса, а для команды App Review это лишь отбраковывание ещё одного приложения среди десятков тысяч. Им кажется, они это понимают, но на самом деле это не так.

— Дэвид Барнард (@drbarnard), 11 февраля 2022 года

Я тоже была в такой ситуации, и как инди-разработчик, и как мобильный разработчик по найму. Я выпускала забавные мелкие игры наподобие WorldAnimals и мобильные SaaS-приложения для продакшена. Когда я работала в Pinterest, то помогала в общении с выделенным для нас представителем App Store, ускорявшим процесс проверки обновлений приложения Pinterest. Я своими глазами видела нехватку поддержки инди-приложениям по сравнению с удобствами, которые получают крупные компании. Этого хватает, чтобы сказать, что я вполне достаточно знаю о том, как работает весь процесс.

Тем не менее, меня всё равно удивило сообщение от App Review. Я не отправляла обновление WorldAnimals. Приложение продолжало хорошо работать, оно не вываливалось, и каждый месяц его скачивал десяток новых пользователей. За неделю до этого мой начальник даже показал, что скачал моё приложение на свой телефон для дочери — мы играли в неё вместе на рабочем совещании и смеялись над забавными звуками животных. На мой взгляд, не было никаких причин, по которым я бы могла получить угрожающее сообщение от системы App Review компании Apple.

Как оказалось, для Apple проблема с моим приложением заключалась в том, что я его не обновляла.

Я открыла сообщение и увидела уведомление «App Store Improvement Notice», в котором, по сути, говорилось, что я не обновляла приложение в течение трёх лет и теперь оно считается устаревшим. Мне нужно было обновить приложение в течение 90 дней, в противном случае оно будет автоматически удалено.

app-notice

Сообщение, полученное от App Store Review, уведомляет, что моё приложение «устарело».

Закроем глаза на тот факт, что моё приложение имело рейтинг в пять звёзд и его продолжали скачивать без жалоб от пользователей. Забудем и о том, что в App Store у меня были другие приложения с высоким рейтингом, и некоторые из них обновлялись позже, чем июль 2019 года, чётко демонстрируя, что я не забросила эти приложения. Если бы моё устаревшее приложение проверил живой человек, он бы обнаружил, что с самого начала я проектировала его так, чтобы оно динамически масштабировалось под UI и размер подходил для новых устройств iPhone. Всё это могло бы послужить сигналами для Apple, что это не мусорное спам-приложение, снижающее качество её App Store.

Многие разработчики жаловались на эту драконовскую меру. Решение об удалении устаревших приложений накладывает диспропорциональное бремя на инди-разработчиков и любителей, поскольку у них может не быть времени и ресурсов для возврата к этим старым приложениям. Одна только лицензия разработчика Apple стоит $99 в год. Когда платформа, которой ты уже заплатил за публикацию своего приложения, требует снова купить лицензию, чтобы то же приложение оставалось доступным, это немного похоже на вымогательство.

Наряду с финансовыми потерями, ещё более оскорбительным в политике Apple мне кажется то, как плохо продуман показатель «качества» приложений. Сообщение содержало два заявления о моём приложении: (1) оно не обновлялось в течение трёх лет, и (2) не достигает «минимального значения скачиваний». Решение любой из этих так называемых проблем не будет волшебным образом означать, что моё приложение обладает высоким качеством и удобно для пользователей.

В этом отношении нет абсолютно никаких требований к обновлению приложения, поскольку Apple заявляет только следующее: «приложение останется доступным, если обновление приложения будет отправлено и одобрено в течение 90 дней». По крайней мере, в случае Google, Play Store требует обновления до минимального целевого уровня API, что гарантирует использование разработчиками новой версии Android Studio.

Цель политик Apple и Google заключается в том, чтобы принудить разработчиков гарантировать успешную работу приложений на новых устройствах и операционных системах. Apple утверждает, что процесс улучшения App Store повысит удобство для пользователей, поскольку «поддержание актуальности приложений для согласования с современными размерами экранов, SDK, API […] позволяет пользователям удобно пользоваться любым приложением, скачанным из App Store». Но моё приложение уже работало правильно, поэтому обновление было бы бесполезным и формальным.


Моё приложение хорошо работает даже на самых новых iPhone и iPad.

Ещё больше раздражает то, что хотя само приложение нормально работает на всех современных пользовательских устройствах, экосистема разработки Apple за последние три года существенно изменилась. Мой старый код просто больше не работает в новых версиях Xcode. Поэтому мне пришлось четыре часа выходных потратить на обновление всех моих библиотек платформы лишь для того, чтобы просто скомпилировать чёртово приложение. И все эти усилия были нужны только для того, чтобы сменить номер версии сборки с «1.0» на «1.1». UI и функции приложения остались неизменными, поскольку они и так работали, как было задумано!

В пятницу вечером, после своей основной работы, в поте лица пытаюсь заработать копейку на своих инди-играх и угнаться за изменениями Apple, Google, Unity, Xcode, MacOS, которые происходят так быстро, что кружится голова. При этом программы начинают работать хуже на старых устройствах.

— Protopop Games (@protopop), 23 апреля 2022 года

В довершение, Apple сообщает мне, что я бы могла избежать всех этих мучений, если бы моё приложение преодолело порог «минимального количества скачиваний». В политике совершенно ничего не говорится о том, какого количества загрузок достаточно для того, чтобы приложение пометили как устаревшее — это сотни, тысячи или сотни тысяч скачиваний в месяц? Похоже, что этот пункт специально добавили в политику для приложений с крупными бюджетами на маркетинг. Согласно исследованию, общие маркетинговые затраты на установку приложений в 2022 году составят $61,1 миллиарда. Поэтому утверждать, что чем больше скачиваний, тем выше качество приложений, было бы невероятно ошибочно. Всё, о чём говорит большое количество скачиваний, так это о том, что на маркетинг и оптимизацию установок приложений было потрачено много денег.

Apple удалила мою версию FlickType Keyboard, предназначенную для слабовидящих людей, потому что я не обновлял её два года. Тем временем, игры наподобие Pocket God не обновлялись разработчиками уже семь лет.

— Коста Элефтериу (@keleftheriou), 23 апреля 2022 года

В целом, такими репрессиями Apple даёт понять, что её не заботят мелкие и независимые разработчики. Например, App Store мог бы учитывать такие показатели:

  • Рейтинги и отзывы в App Store
  • Активная лицензия разработчика
  • Поведение разработчика в прошлом (например, обновление других приложений)
  • Количество вылетов
  • Количество активных сессий, особенно на новых устройствах и версиях платформ

Все эти метрики и так уже автоматически отслеживаются Apple, они доступны разработчику через портал App Store Connect.

appstoreconnect-overview

В App Store Connect показаны характеристики приложения и различные метрики, в том числе активные сессии и вылеты.

appstoreconnect-metrics

Вкладка метрик позволяет разработчикам структурировать метрики своих приложений по устройствам и версиям платформ.

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

В конечном итоге, Apple всегда отдаёт предпочтение потребностям мегаприложений, имеющих миллионы скачиваний, поскольку эти приложения генерируют основную часть прибыли App Store. На компании, финансируемые венчурным капиталом, политика улучшения App Store практически не влияет. Быстрорастущие приложения, пытающиеся удовлетворить потребности рынка, получают регулярные обновления благодаря огромным командам мобильных разработчиков. Мелким приложениям и их разработчикам приходится подчиняться капризам платформы, в противном случае они исчезнут без следа — таким был и всегда будет риск создания ПО внутри «огороженного сада».

Мне бы хотелось, чтобы у App Store существовала концепция «завершённого» приложения, не требующего дальнейших обновлений. Эмилия (@lazerwalker) сформулировала это крайне чётко, назвав некоторые виды ПО «законченными произведениями искусства»:

Apple удаляет несколько моих старых игр, потому что они «не обновлялись в течение существенного промежутка времени». Игры могут существовать как завершённые объекты! Эти бесплатные проекты не пригодны для обновлений и модели живого обслуживания, они стали законченными произведениями искусства уже много лет назад.

— Эмилия (@lazerwalker), 23 апреля 2022 года

Игры — не единственный тип ПО, не требующий обновления. У Робина Слоуна есть чудесное приложение для создания «сенсорных эссе» под названием Fish. Это приложение в последний раз обновлялось в июне 2018 года, поэтому по стандартам Apple считается «устаревшим». Вероятно, Слоун опротестовал его удаление, поскольку оно всё ещё доступно для iOS, и всегда есть возможность получить его для macOS, а при необходимости и для Windows. Другим творцам может повезти не так сильно или у них не так много времени/денег, чтобы реализовать свою работу на других платформах.

Будет очень сложно изменить мотивацию Apple и Google, заставив их заботиться об этих крошечных сокровищах. Эти компании убивали приложения с самого момента создания своих магазинов в пользу новых мобильных устройств и функциональности. В Tiktok есть целый тренд под названием #oldapps, это просто видео людей, включающих старые телефоны, чтобы запустить приложения, которые больше не работают; они вспоминают о той радости, которую вызывали эти приложения.

День за днём, месяц за месяцем App Store будет становиться всё менее разнообразным и живым, поскольку приложения будут признаваться устаревшими и удаляться. Ещё одно последствие такой враждебной политики заключается в том, что инди-разработчики и любители могут перестать создавать мобильные приложения. Ведь в конечном итоге фундаментально более стабильным местом для экспериментального ПО и «законченных произведений искусства» является веб, поскольку обратная совместимость в нём остаётся золотым стандартом, а приложения могут работать без ограничений.

Спустя четыре часа работы над перекомпиляцией моего приложения и 44 часов ожидания в очереди на проверку WorldAnimals обновилась до новой версии. Я в безопасности по крайней мере ещё на три года, прежде чем оно будет автоматически помечено на удаление. Если, конечно, Apple не решит установить новое пороговое значение для «устаревшего» ПО и снова не изменит политику.

appstore-submission

WorldAnimals теперь доступна ещё на три года (надеюсь).

Я по-прежнему люблю мобильную разработку — большая часть моей карьеры разработчика связана с созданием мобильных приложений всевозможного размера, от небольших хобби-проектов до ПО для огромных компаний-единорогов. Я горжусь WorldAnimals и хочу, чтобы игра по-прежнему оставалась доступной для скачивания. Но эта политика определения устаревшего ПО заставит меня серьёзно задуматься о необходимости создания интересных экспериментальных приложений для iOS в будущем.

Комментарии (2)


  1. polearnik
    03.11.2022 11:23
    +7

    если поведение корпораций вам кажется глупым значит у корпорации другие цели.


  1. igurylev
    03.11.2022 11:26
    +3

    > веб, поскольку обратная совместимость в нём остаётся золотым стандартом, а приложения могут работать без ограничений.

    Flash, Silverlight, смена API у расширений для браузеров и прочие депрекейты...

    Нет, веб тоже не является стабильным местом. Хотя и более стабильным чем проприетарные маркеты