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

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


Чтобы посмотреть подробный отчет о событии, нажмите на проблему на панели управления DevOps и вовлечение > Crashlytics в Firebase Console. Вы можете настраивать эти отчеты, чтобы лучше понимать, что происходит в вашем приложении и при каких обстоятельствах происходят события, о которых сообщается в 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.

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

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

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

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

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

Истории действий пользователей создаются с помощью Google Аналитики. Чтобы получать их, включите Google Аналитику для проекта Firebase и добавьте Firebase SDK для Google Analytics в приложение. После этого истории действий пользователей будут автоматически включаться в данные о событиях на вкладке Журналы при просмотре сведений о проблеме. Все проблемы можно найти в Firebase Console на панели 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.

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