Firebase Crashlytics — это легкий инструмент для создания отчетов о сбоях в реальном времени, который позволяет легко управлять проблемами стабильности в вашем приложении. Crashlytics экономит ваше время на устранение неполадок, интеллектуально группируя сбои и выделяя обстоятельства, которые к ним привели.
В этом руководстве описывается, как интегрировать Crashlytics в ваш проект Android Studio, чтобы вы могли регистрировать идентификаторы ответов на рекламу. Позже, когда вы будете устранять сбои в своем приложении, вы сможете найти идентификатор ответа на объявление и использовать Центр просмотра объявлений вМенеджер рекламынайти и заблокировать рекламу.
Шаг 1. Добавьте Firebase в приложение Android
Если вы хотите попробовать войти в систему с помощью Firebase из чистого приложения, вы можете загрузить или клонировать примеры Google Mobile Ads SDK для репозитория Android на GitHub. В этом руководстве специально используетсяПример баннера .
Если у вас уже есть приложение, вы сможете перейти к другим шагам, указав имя пакета вашего приложения. Те же шаги можно применить и к другим примерам в репозитории с небольшими изменениями.
Чтобы использовать Firebase Crashlytics, вам необходимо создать проект Firebase и добавить в него свое приложение. Если вы еще этого не сделали, создайте проект Firebase. Обязательно зарегистрируйте в нем свое приложение .
На странице Crashlytics консоли Firebase нажмите «Настроить Crashlytics» .
На появившемся экране нажмите Нет > Настроить новое приложение Firebase .
В свой build.gradle добавьте зависимости для Google Analytics, Fabric и Crashlytics.
приложение/build.gradle
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Add the Fabric plugin apply plugin: 'io.fabric' dependencies { // ... // Add the Google Mobile Ads SDK implementation 'com.google.android.gms:play-services-ads:23.5.0' // Add the Firebase Crashlytics dependency. implementation 'com.google.firebase:firebase-crashlytics:19.2.1' }
проект/build.gradle
buildscript { repositories { // ... // Add Google's Maven repository. google() } dependencies { // ... classpath 'com.google.gms:google-services:4.4.2' // Add the Fabric Crashlytics plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' } } allprojects { // ... repositories { // Check that Google's Maven repository is included (if not, add it). google() // ... } }
Создайте и запустите свое приложение, чтобы убедиться, что Crashlytics настроен правильно. В случае успеха вы сможете получить доступ к панели управления Crashlytics.
(Необязательно): проверьте свою настройку.
Добавив кнопку сбоя , вы можете вызвать сбой, вызывающий сбой приложения при каждом нажатии кнопки.
Вот пример, показывающий, как добавить кнопку аварийного завершения в методе onCreate()
Activity
:
Основная активность (отрывок)
Ява
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); // Start loading the ad in the background. adView.loadAd(new AdManagerAdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Котлин
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) // Start loading the ad in the background. adView.loadAd(AdManagerAdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
В Android Studio создайте и запустите свое приложение на эмуляторе или подключенном устройстве. После загрузки приложения вы можете нажать кнопку «Сбой» . Перезапустите приложение с устройства или Android Studio, чтобы журнал сбоев был загружен в Crashlyics.
Шаг 2. Зарегистрируйте идентификатор ответа на объявление.
Если вы загружаете несколько объявлений и показываете их в разное время, рекомендуется регистрировать каждый идентификатор ответа на объявление с помощью отдельного ключа. Например, в этом руководстве используется пример, в котором есть только один рекламный баннер. Следовательно, мы регистрируем идентификатор ответа на объявление как ключ banner_ad_response_id
в следующем фрагменте. Действительно, вы можете создать несколько пользовательских пар ключ/значение в Firebase Crashlytics для разных типов объявлений и рекламных событий (о жизненном цикле объявления см. AdListener
). Посетите раздел «Настройка отчетов о сбоях Firebase Crashlytics», чтобы получить дополнительную информацию о пользовательском ведении журналов.
Добавьте следующий код в свой MyActivity.java
. По сути, он использует функцию FirebaseCrashlytics.setCustomKey()
в функции обратного вызова onAdLoaded()
, чтобы убедиться, что объявление загрузилось, прежде чем пытаться вызвать getResponseInfo()
.
Ява
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { String adResponseId = adView.getResponseInfo().getResponseId(); FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId); } }); // Start loading the ad in the background. adView.loadAd(new AdManagerAdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Котлин
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) adView.adListener = object : AdListener() { override fun onAdLoaded() { mAdView.responseInfo?.responseId?.let { adResponseId -> FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId) } } } // Start loading the ad in the background. adView.loadAd(AdManagerAdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Поздравляем! Теперь вы увидите самый последний banner_ad_response_id
в ключевом разделе сеансов сбоя на панели управления Crashlytics. Обратите внимание, что некоторым клавишам может потребоваться до часа, чтобы они стали видны на вашей панели управления.