Процесс запуска

Как отслеживать сбои мобильного приложения после запуска

Отчет о вылетах полезен, только если команда понимает, чьи действия сорвались и кто должен принять решение.

Пассажирка проверяет телефон у турникета, когда билет в приложении не открывается
Пассажирка проверяет телефон у турникета, когда билет в приложении не открывается
Короткий ответ

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

Оцените приложение в коротком опросе

Начать

Приложение может быть «стабильным», а билет не откроется

Человек подходит к турникету и открывает билет. Вместо QR-кода видит главный экран телефона: приложение закрылось. В тестировании всё работало, релиз прошел проверку магазина, но сейчас это мало утешает пассажира. Сцена на фотографии иллюстрирует возможную ситуацию, а не историю клиента Appfyl.

После запуска команде нужны ответы на три вопроса: кто не смог выполнить какое действие, в какой версии возникла проблема и кто займётся ею сейчас? Поэтому мониторинг начинается с проверки отчетов из рабочей сборки. Далее смотрят, как ведет себя новая версия по сравнению с предыдущей, и не пропадают ли покупки, записи, билеты или входы в аккаунт. Общая подготовка описана в чек-листе запуска; здесь речь о том, что делать после выхода приложения к пользователям.

Вылет, зависание и невыполненное действие: это разные сигналы

Вылет означает, что приложение неожиданно закрылось. На Android бывает и ANR: приложение перестало отвечать на действия, хотя формально не закрылось. Но самый неприятный случай иногда выглядит спокойно: экран продолжает работать, а запись на занятие или оплата так и не попала в систему. Один инструмент не покажет все три ситуации.

Что видит человекГде начать проверкуЧто выяснить сразу
Приложение закрывается при открытии билетаCrashlytics или другой сборщик ошибок, версия и модель устройстваПроблема появилась в новом выпуске? Скольких людей она затронула?
Экран входа перестал отвечать на AndroidAndroid vitals и отчеты о зависанияхМожно ли продолжить работу? На каких устройствах это происходит?
Приложение показало успешную запись, но визита нетСобытие действия, серверная запись и обращения в поддержкуДействие действительно сохранилось или только экран сообщил об успехе?

Firebase объясняет показатели сеансов и пользователей без вылетов. Они помогают заметить критические ошибки, но не измеряют все сорванные действия. Даже хороший общий процент может скрывать проблему у небольшой группы платящих пользователей. Поэтому сначала отделяйте рабочий выпуск от тестового и смотрите, где именно появилась ошибка.

Проверьте сбор отчетов до того, как начнете доверять нулю

Попросите разработчика вызвать контролируемый сбой в сборке, максимально близкой к рабочей, и показать полученный отчет. В нем должны читаться версия приложения, платформа, устройство и место ошибки. Если для iOS не загружены файлы символов, а для Android потеряны файлы сопоставления имен, отчет может прийти, но причину будет трудно найти. Повторяйте проверку после изменения процесса сборки, а не только при первом подключении сервиса.

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

Собирайте ровно столько контекста, сколько нужно для диагностики: версия, обезличенный идентификатор ошибки, последнее безопасное действие. Не записывайте пароли, токены, платежные реквизиты, медицинские сведения и переписки. После добавления нового сервиса проверьте политику конфиденциальности и сведения для магазинов.

Есть идея приложения и нужен трезвый следующий шаг?

Разобрать идею приложения

Не ждите, что один кабинет расскажет всю историю

Android vitals показывает сбои и зависания, которые видит Google Play. Crashlytics помогает группировать ошибки и сравнивать выпуски. Sentry может быть альтернативой для команды, которой нужны также сведения о производительности. Но ни один из этих кабинетов сам по себе не объяснит, прошла ли оплата на сервере или помог ли оператор человеку у стойки.

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

Решение об остановке зависит от последствий, а не от красивой цифры

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

Сотрудница клуба помогает посетительнице, когда отметка о приходе не сохраняется
Приложение может оставаться открытым, пока важное действие не выполняется

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

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

Первые сутки после релиза лучше расписать заранее

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

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

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

Если вы передаете нестабильное приложение другой команде, принесите ссылки на магазины, номер версии, пример сломанного сценария, обращения пользователей и доступ к существующим отчетам. Фразы «сделайте нормально» недостаточно для диагностики. Appfyl может начать с короткого описания проекта, после чего определить, нужен ли точечный ремонт или более широкая переделка. Причину сбоя нельзя честно назвать до изучения данных.

Превратите исследование в план запуска

Appfyl поможет превратить идею в понятный план приложения, список функций первой версии и план первых работ.

Обсудить план приложения

Главные выводы

  • Вылет, зависание Android и незавершенное действие нужно искать по-разному.
  • Отчеты проверяют на рабочей сборке, а уведомления направляют конкретному человеку.
  • Важнее понять, скольких пользователей и какой сценарий затронула проблема, чем смотреть на один процент.
  • Останавливайте расширение выпуска, если под угрозой важное действие или данные, и проверяйте исправление после публикации.

Полезные ссылки

Частые вопросы

Достаточно ли одного Crashlytics?

Нет. Он помогает найти технические сбои, но не заменяет события ключевых действий и серверную проверку записей или платежей.

Почему пользователи жалуются, а в отчетах ноль ошибок?

Сначала проверьте, что рабочая версия передает данные и ею действительно пользуются. Затем посмотрите версию, канал публикации и тип жалобы: это может быть зависание или невыполненное действие, а не вылет.

Нужно ли останавливать выпуск после одного вылета?

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