Настройте отчеты о сбоях для Unity

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


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

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

В отчете обнаружены исключения.

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

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

Crashlytics.LogException(Exception ex);

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

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

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

Для необработанных исключений , которые не приводят к сбою игры (например, необработанные исключения C# в игровой логике), вы можете настроить Crashlytics SDK на отправку сообщений о них как о фатальных событиях , установив свойство 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. Эти ошибки, связанные с памятью, могут быть связаны с повреждением памяти внутри вашего приложения, что является основной причиной уязвимостей безопасности приложений.

  • Эти данные можно просмотреть на новой вкладке «Трассировка стека памяти», перейдя к подробной информации о проблеме на панели мониторинга Crashlytics .

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

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

Добавить пользовательские клавиши

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

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

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

Crashlytics.SetCustomKey(string key, string value);

Добавить пользовательские сообщения в журнал.

Зарегистрированные сообщения связаны с данными о сбоях и отображаются на панели мониторинга Firebase Crashlytics при просмотре конкретного сбоя.

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

Получите хлебные крошки

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

Отслеживание событий с помощью Google Analytics осуществляется на основе навигационной цепочки, поэтому для получения таких данных необходимо включить Google Analytics для вашего проекта Firebase и добавить SDK Firebase для Google Analytics в ваше приложение. После выполнения этих требований данные автоматически будут добавляться к данным события на вкладке «Журналы» при просмотре подробностей проблемы.

Analytics SDK автоматически регистрирует событие 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 в верхней части списка проблем Crashlytics в консоли Firebase .