Регистрация идентификатора ответа объявления с помощью Firebase Crashlytics

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

Firebase Crashlytics — это легковесный инструмент для отслеживания сбоев в реальном времени, который упрощает управление проблемами стабильности вашего приложения. Crashlytics экономит время на устранение неполадок, интеллектуально группируя сбои и выделяя обстоятельства, которые к ним привели.

В этом руководстве описано, как интегрировать Crashlytics в ваш проект Android Studio, чтобы вы могли регистрировать идентификаторы ответов на рекламу. Позже, при устранении неполадок, приводящих к сбоям в вашем приложении, вы сможете найти идентификатор ответа на рекламу и использовать Центр проверки рекламы в Менеджере рекламы , чтобы найти и заблокировать рекламу.

Шаг 1: Добавьте Firebase в Android-приложение

  1. Если вы хотите попробовать логининг с помощью Firebase из чистого приложения, вы можете загрузить или клонировать репозиторий примеров Google Mobile Ads SDK для Android на GitHub. В этом руководстве используется конкретный пример баннера .

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

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

    1. На странице Crashlytics в консоли Firebase нажмите «Настроить Crashlytics» .

    2. На появившемся экране нажмите «Нет» > «Настроить новое приложение Firebase» .

  3. В файл build.gradle добавьте зависимости для Google Analytics, Fabric и Crashlytics.

    app/build.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    // Add the Fabric plugin
    apply plugin: 'io.fabric'
    
    dependencies {
        // ...
    
        // Add Google Mobile Ads SDK
        implementation 'com.google.android.gms:play-services-ads:24.9.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:20.0.3'
    }

    проект/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.4'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.6'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
  4. Соберите и запустите приложение, чтобы убедиться в правильной настройке Crashlytics. После успешного завершения вы сможете получить доступ к панели управления Crashlytics.

(Необязательно): Проверьте свою настройку

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

Вот пример, демонстрирующий, как добавить кнопку аварийного завершения в метод onCreate() Activity :

Основная активность (фрагмент)

Java

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() .

Java

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))
}

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