Как настроить отчеты о сбоях для Unity

Выберите платформу: iOS+ Android Flutter Unity


Чтобы посмотреть подробный отчет о событии, нажмите на проблему на панели управления DevOps & Engagement (DevOps и вовлечение) > Crashlytics в консоли Firebase. Вы можете настраивать эти отчеты, чтобы лучше понимать, что происходит в вашем приложении и при каких обстоятельствах происходят события, о которых сообщается в Crashlytics.

Как сообщить об исключениях

Сообщать о перехваченных исключениях

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

Регистрировать исключения в C# можно следующим образом:

Crashlytics.LogException(Exception ex);

Вы можете регистрировать ожидаемые исключения в блоках try/catch:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

Как регистрировать необработанные исключения

Чтобы неперехваченные исключения, которые не приводят к сбою игры (например, неперехваченные исключения C# в логике игры), регистрировались SDK Crashlytics как критические события, задайте для свойства Crashlytics.ReportUncaughtExceptionsAsFatal значение true в месте инициализации Crashlytics в проекте Unity. Эти события передаются в Crashlytics в реальном времени, и пользователю не нужно перезапускать игру.

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

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

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

Включать отчеты GWP-ASan для отладки проблем с повреждением памяти

Если в вашем приложении для Android используется IL2CPP, Crashlytics может помочь вам отлаживать сбои, вызванные ошибками нативной памяти, собирая отчеты GWP-ASan. Ошибки, связанные с памятью, могут быть вызваны повреждением памяти в приложении, что является основной причиной уязвимостей в системе безопасности.

В консоли Firebase на панели DevOps & Engagement (DevOps и вовлечение) > Crashlytics вы можете:

  • Эти данные можно посмотреть на новой вкладке "Трассировки стека памяти" в сведениях об ошибке.

  • Вы можете использовать новый сигнал и фильтр "Отчет GWP-ASan", чтобы быстро находить все проблемы с этими данными.

Вы можете получать отчеты о памяти GWP-ASan, если в вашем приложении используется последняя версия SDK Crashlytics для Unity (10.7.0 или более поздняя) и GWP-ASan включен вручную (для этого нужно изменить манифест приложения Android). Если в вашем приложении есть код C++, вы можете протестировать настройки GWP-ASan, используя пример нативного кода в документации Android.

Добавить специальные ключи

Специальные ключи помогают определить, в каком состоянии находилось приложение перед сбоем. Вы можете связать произвольные пары "ключ-значение" с отчетами о сбоях, а затем использовать специальные ключи для поиска и фильтрации отчетов о сбоях на панели управления DevOps & Engagement (DevOps и вовлеченность) > Crashlytics в консоли Firebase.

  • Вы можете искать проблемы, соответствующие пользовательскому ключу.

  • При просмотре определенной проблемы в консоли вы можете увидеть связанные с ней специальные ключи для каждого события (вложенная вкладка Ключи) и даже отфильтровать события по специальным ключам (меню Фильтр в верхней части страницы).

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

Crashlytics.SetCustomKey(string key, string value);

Как добавить собственные сообщения в журнал

Чтобы лучше понимать, что привело к сбою, вы можете добавить в приложение специальные журналы Crashlytics. Crashlytics связывает журналы с данными о сбоях и показывает их на вкладке Журналы, когда вы просматриваете сведения о проблеме. Все проблемы можно найти в консоли Firebase на панели управления DevOps & Engagement (DevOps и вовлечение) > Crashlytics.

Crashlytics.Log(string message);

Как задать идентификаторы пользователей

Вы можете использовать идентификационный номер, токен или значение хеша, чтобы однозначно идентифицировать конечного пользователя вашего приложения, не раскрывая и не передавая его личную информацию. Вы также можете очистить значение, задав пустую строку. Это значение отображается при просмотре конкретного сбоя на панели управления DevOps & Engagement (DevOps и вовлечение) > Crashlytics в консоли Firebase.

Crashlytics.SetUserId(string identifier);

Как получить историю действий пользователя

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

Истории действий пользователя создаются с помощью Google Аналитики, поэтому вам нужно включить Google Аналитику для проекта Firebase и добавить Firebase SDK для Google Analytics в приложение. После этого истории действий пользователя будут автоматически добавляться к данным о событиях на вкладке Журналы при просмотре сведений о проблеме. Все проблемы можно посмотреть в консоли Firebase на панели управления DevOps и взаимодействие > Crashlytics.

SDK Analytics автоматически регистрирует событие screen_view, что позволяет показывать в истории действий список экранов, просмотренных до сбоя, нефатальной ошибки или ошибки ANR. История действий пользователя screen_view содержит параметр firebase_screen_class.

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

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

Как включить отчеты о согласии

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

Управление данными Crash Insights

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

Crash Insights использует агрегированные данные о сбоях, чтобы выявлять общие тенденции стабильности. Если вы не хотите делиться данными своего приложения, вы можете отключить Crash Insights в меню Crash Insights в верхней части списка проблем на панели управления DevOps & Engagement (DevOps и вовлечение) > Crashlytics в консоли Firebase.

Дальнейшие действия

  • Экспортируйте данные в BigQuery или Cloud Logging, чтобы выполнять расширенный анализ и использовать дополнительные функции, например запрашивать данные, создавать собственные сводки и настраивать специальные оповещения.