App Store Connect API 4.6: что делать, если отчёт INSTALLS перестал обновляться? 2026

App Store Connect API 4.6: что делать, если отчёт INSTALLS перестал обновляться? 2026

Новые отчёты INSTALLS после App Store Connect API 4.6 не формируются, а исторические отчёты по-прежнему можно скачать в пределах условий Apple. Не запускайте бесконечные повторы: сначала подтвердите статус отчёта, сохраните доступную историю и разделите штатное отсутствие новых данных и техническую ошибку. Изменение API и дату выпуска Apple указывает в примечаниях к App Store Connect API 4.6 и на странице выпуска.

Эта инструкция пригодится разработчикам, которые поддерживают автоматическое скачивание отчётов App Store Connect и должны отличать изменение их жизненного цикла от проблем с доступом, сетью или скриптом.
Она также адресована инженерам, отвечающим за macOS CI и за дашборды, где пропуск файла может исказить историю или вызвать ложное уведомление.

Последняя проверка — 7 ноября 2026 года; дата выпуска сверена со страницей Apple, а сведения о запросах и доступности — с документацией по отчётам и описанием доступности Sales and Trends. При обновлении Apple этих материалов проверьте выводы повторно.

Почему INSTALLS перестал обновляться, а задача всё ещё запускается

App Store Connect API 4.6 — не просто очередное изменение версии, которое можно нейтрально обработать обновлением клиента. В документации Apple для этой версии указано изменение статуса отчётов INSTALLS: новые отчёты больше не создаются. Существующие исторические файлы при этом не следует считать автоматически удалёнными или недоступными: Apple отдельно описывает доступность отчётов и условия их получения. Проверяйте эти два утверждения по отдельности, а не делайте вывод по одному пустому ответу.

Это различие важно, потому что работающий планировщик не гарантирует, что источник данных продолжает выпускать новые файлы. Задача может успешно проснуться по расписанию, подключиться к API и записать результат, который означает «нового отчёта нет». Если логика трактует любой такой результат как временную ошибку, CI будет повторять запрос, шуметь в оповещениях и расходовать ресурсы, хотя сам отчёт уже не формируется.

Вместе с тем изменение жизненного цикла отчёта не оправдывает любые ошибки. Истёкшие или неправильно настроенные учётные данные, недостаточный доступ, некорректные параметры запроса, сетевые сбои и регрессия парсера остаются самостоятельными причинами неудачи. Сверьте фактическую цель запроса и параметры с описанием API для получения Sales and Trends reports, а требования к доступу — с руководством Apple по App Store Connect API.

Практическая проверка должна ответить на несколько отдельных вопросов:

Последний пункт особенно легко упустить: задача может выглядеть как проблема macOS CI, хотя сама macOS-машина доступна, а несовместимость возникает между ожидаемым результатом скрипта и фактическим состоянием отчёта.

Сначала проверьте поведение, затем выбирайте реакцию

Используйте этот список перед тем, как менять расписание или объявлять инцидент. Отмечайте только то, что подтверждено логами или проверкой запроса, а не предположениями по графику.

Результат этой проверки определяет следующий шаг. Если история читается, а свежий отчёт отсутствует в соответствии с документацией, корректируйте ожидания задачи, а не параметры сети. Если исторический запрос тоже не проходит, исследуйте доступ, параметры и сам ответ API: изменение генерации новых файлов не объясняет каждую ошибку чтения.

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

Дашборд должен отличать отсутствие данных от нулевого значения

Когда загрузчик перестаёт получать новые файлы, риск переносится из CI в аналитику. Наиболее опасный вариант — присвоить установкам значение «0», если отчёт отсутствует. Ноль означает измеренное значение, а отсутствие файла — что данных за этот период нет. Если смешать эти состояния, линия графика может показать искусственное падение, а расчёты конверсии и оповещения начнут описывать не поведение пользователей, а изменение доступности отчёта.

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

Проверьте весь путь значения, а не только интерфейс:

Также выясните, какие потребители используют INSTALLS косвенно: ежедневные сводки, отчёты для продуктовой команды, сравнительные графики или внутренние выгрузки. Исправленный экран не решает проблему, если downstream-задача продолжает трактовать пропущенную строку как ноль. Для определения смысла показателей ориентируйтесь на официальные определения метрик App Store Connect, а не на названия колонок в собственном дашборде.

Не выводите из остановки INSTALLS вывод об остановке всех метрик установок или всех отчётов App Store Connect. Сверяйте определение каждого источника и его доступность отдельно: похожее название не означает одинаковую методику или одинаковый период обновления.

Исторические файлы требуют собственного архива

Возможность скачать исторические данные и автоматическое хранение вашей копии — разные вещи. Доступность файла через API зависит от условий Apple, типа отчёта и периода, который ещё можно запросить; прежний успешный запуск не доказывает, что тот же файл будет всегда доступен. Поэтому, если INSTALLS нужен для воспроизводимой аналитики, не полагайтесь только на возможность повторно получить его из App Store Connect.

Сначала определите, какие периоды уже сохранены локально или в хранилище команды. Для каждого файла зафиксируйте идентификатор отчёта, приложение, временной интервал, дату получения и результат проверки целостности. Затем сверяйте перечень сохранённых данных с тем, что ещё можно запросить по правилам доступности Sales and Trends. Не обещайте бизнес-заказчикам полное восстановление истории, пока не проверили фактические файлы.

Рекомендуемый порядок переноса в архив:

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

Замена INSTALLS требует проверки смысла, а не похожего названия

Запрос на «другой показатель вместо INSTALLS» сначала нужно перевести в конкретную бизнес-задачу. Требуются ли вам события установки, сведения о пользовательском привлечении, использование приложения или оценка поведения пользователей? Это разные вопросы. Показатель с похожей подписью не становится заменой, пока не совпадают определение, область охвата, правила учёта и период получения.

Apple публикует разные материалы по аналитическим отчётам и метрикам. Например, отдельно описаны отчёт об установках и удалениях приложений и Platform App Installs. По самим названиям нельзя заключить, что один из них является прямым продолжением или эквивалентом INSTALLS из Sales and Trends. Прежде чем менять показатель в отчёте, прочитайте определения и проверьте, доступен ли нужный набор вашей команде в соответствующем интерфейсе и с подходящими правами.

Для оценки кандидата зафиксируйте:

До проверки помечайте новый показатель как отдельную метрику. Не склеивайте его со старым рядом и не пересчитывайте исторические значения так, словно методика не менялась. Если команда использует отчёт для сравнения периодов, добавьте пояснение о разрыве в методологии. Это честнее, чем создать бесшовный график, который выглядит убедительно, но сравнивает разные определения.

Как адаптировать macOS CI без бесполезных повторов

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

Начните с разделения обработки результата на понятные ветви. Штатное отсутствие нового отчёта должно завершать конкретную попытку без повторов, но оставаться видимым в журнале и статусе мониторинга. Ошибка доступа должна направлять инженера к проверке роли и ключа. Ошибка запроса — к параметрам и формату. Сетевую нестабильность можно обрабатывать по правилам вашей инфраструктуры, но только когда журнал действительно показывает временную проблему соединения. Не объединяйте все варианты в условие «файл не найден — повторить».

Затем пересмотрите расписание и оповещения. Если macOS CI запускает загрузчик наряду с другими задачами, не обязательно удалять весь конвейер: можно отключить только бесполезную ветвь генерации новых INSTALLS, оставив архивирование доступной истории и остальные независимые операции. Если отчёт использовался только для одного дашборда, проверьте, что удаление задачи не скрывает для команды факт изменения источника данных.

Проведите проверку двумя отдельными сценариями:

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

Если для автоматизации нужны дополнительные рекомендации по эксплуатации удалённой машины, на странице руководств UDPMac можно подобрать материалы по работе с удалённой средой. При этом App Store Connect API сам по себе не требует запуска на Mac: выбирайте платформу по фактическим зависимостям задачи, а не по названию отчёта.

Сравните варианты обработки и оцените риски

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

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

Когда арендованный Mac помогает, а когда нет

Если текущая схема запускает загрузчик на общей CI-машине, её минусы в этой ситуации вполне конкретны: повторные попытки скрывают ожидаемое отсутствие отчёта; временные журналы могут исчезнуть после очистки агента; дашборд может получать нули вместо статуса «нет данных»; восстановление контекста зависит от того, кто помнит настройки задачи. Эти проблемы не исчезают от переноса скрипта на другую операционную систему — сначала исправьте классификацию результата, архив и оповещения.

Аренда удалённого Mac от UDPMac может быть удобнее, если вам нужен постоянно доступный macOS-узел для соседних задач: например, для процессов, связанных с Xcode, подписанием или другими инструментами, которых нет в вашей Linux-среде. В этом случае можно централизовать расписание, хранение рабочих файлов и проверку журналов на отдельной машине, не покупая физический Mac. Варианты удалённого доступа и размещения стоит соотнести с вашей сетью и требованиями команды; описание инфраструктурных вариантов есть на странице центров обработки данных UDPMac.

Но аренда Mac не возвращает генерацию INSTALLS и не является обязательным условием для запросов App Store Connect. Если ваши скрипты переносимы, CI уже надёжен, а macOS-специфичных задач нет, разумнее оставить их на текущей платформе. Если же вам нужен временный или отдельный macOS-узел для связанных процессов, оцените варианты удалённого Mac от UDPMac по реальным требованиям к доступу, хранению и сопровождению, сохраняя изменения отчёта и состояние источника раздельными понятиями.

Часто задаваемые вопросы

Создаёт ли App Store Connect API 4.6 новые отчёты INSTALLS?

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

Можно ли скачать старые отчёты INSTALLS через API?

Исторические отчёты остаются доступными для скачивания в рамках указанных Apple условий. Это не означает, что API продолжит создавать новые файлы или что любой старый файл можно получить без ограничений. Проверьте требования к запросу, доступность конкретного периода и формат данных в документации, а уже загруженные отчёты храните в собственном архиве.

Пустой ответ задачи означает ошибку скрипта?

Не обязательно. Сначала выясните, запросил ли скрипт именно INSTALLS, какие параметры и учётные данные он передал и что вернул API. Если запрос успешно обработан, но нового отчёта нет, результат может соответствовать изменившемуся состоянию отчёта. Разделите в логах отсутствие нового файла, ошибку доступа, сетевой сбой и ошибку разбора ответа.

Как показывать остановившийся отчёт INSTALLS в дашборде?

Не преобразуйте отсутствие нового файла в нулевое количество установок. Отдельно показывайте последнее доступное значение и дату его получения, а также состояние «новых данных нет». В расчётах помечайте период как неполный или недоступный, чтобы остановка обновления не создавала ложного падения графика и не запускала неподходящие бизнес-оповещения.

UDPMac — облачный Mac

Проверьте процессы CI на выделенном Mac от UDPMac

Запускайте задачи CI на удалённом физическом Mac с Apple Silicon и проверяйте работу своих скриптов в отдельной среде.

Посмотреть тарифы на облачный Mac