Catch up on everthing we announced at this year's Firebase Summit. Learn more

Учебное пособие: тестирование внедрения новых форматов рекламы AdMob

Шаг 3. Обработайте значения параметров Remote Config в коде вашего приложения


Введение: Тест принятие нового формата AdMob объявления с использованием Firebase
Шаг 1: Используйте AdMob , чтобы создать новый вариант рекламного блока для тестирования
Шаг 2: Настройка теста A / B в консоли Firebase

Шаг 3. Обработайте значения параметров Remote Config в коде вашего приложения

Шаг 4: Запустите тест A / B и просмотреть результаты тестирования в консоли Firebase
Шаг 5: Определите , нужно ли разворачивать новый формат объявления


В конце последнего шага, вы создали удаленный параметр Config ( SHOW_NEW_AD_KEY ). На этом этапе мы добавим логику в код приложения для того, что ваше приложение должно отображаться на основании значения этого параметра - true (показать новое объявление) по сравнению с false (не показывать новое объявление).

Добавьте необходимые SDK

Перед использованием Remote Config в коде приложения добавьте SDK Remote Config и Firebase SDK для Google Analytics в файлы сборки проекта.

Быстрый

Добавьте и установите в свой подфайл следующие модули:

pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'

Цель-C

Добавьте и установите в свой подфайл следующие модули:

pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'

Джава

Добавьте следующие библиотеки зависимостей для вашего build.gradle файла:

implementation 'com.google.android.gms:play-services-ads:20.5.0'
implementation 'com.google.firebase:firebase-analytics:20.0.0'
implementation 'com.google.firebase:firebase-config:21.0.1'

Котлин + KTX

Добавьте следующие библиотеки зависимостей для вашего build.gradle файла:

implementation 'com.google.android.gms:play-services-ads:20.5.0'
implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
implementation 'com.google.firebase:firebase-config-ktx:21.0.1'

Единство

Загрузите и установите Firebase Unity SDK, затем добавьте в свой проект следующие пакеты Unity:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

Настроить экземпляр Remote Config

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

В этом примере Remote Config настроен на проверку новых значений параметров один раз в час.

Быстрый

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings

Цель-C

self.remoteConfig = [FIRRemoteConfig remoteConfig];
FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
remoteConfigSettings.minimumFetchInterval = 3600;
self.remoteConfig.configSettings = remoteConfigSettings;

Джава

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Котлин + KTX

remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Единство

var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var configSettings = new ConfigSettings {
  MinimumFetchInternalInMilliseconds =
        (ulong)(new TimeSpan(1, 0, 0).TotalMilliseconds)
};
remoteConfig.SetConfigSettingsAsync(configSettings)
        .ContinueWithOnMainThread(task => {
          Debug.Log("Config settings confirmed");
}

Получите и активируйте Remote Config

Получите и активируйте параметры Remote Config, чтобы он мог начать использовать новые значения параметров.

Вы захотите сделать этот вызов как можно раньше на этапе загрузки вашего приложения, потому что этот вызов является асинхронным, и вам потребуется предварительно выбрать значение Remote Config, чтобы ваше приложение знало, показывать ли рекламу.

Быстрый

remoteConfig.fetch() { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate() { (changed, error) in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.loadAdUnit()
}

Цель-C

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        // ...
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
    [self loadAdUnit];
}];

Джава

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                } else {
                    Log.d(TAG, "Config params failed to update");
                }
                loadAdUnit();
            }
        });

Котлин + KTX

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
            } else {
                Log.d(TAG, "Config params failed to update")
            }
            loadAdUnit()
        }

Единство

remoteConfig.FetchAndActivateAsync().ContinueWithOnMainThread(task => {
  if (task.IsFaulted) {
    Debug.LogWarning("Config params failed to update");
  } else {
    Debug.Log("Config params updated: " + task.Result);
  }
  LoadAdUnit();
});

Теперь ваше приложение готово к обработке параметра Remote Config, который вы создали во время A / B-теста, настроенного ранее в этом руководстве.

Используйте значение параметра Remote Config

Используйте предварительно натянутый Remote значение Config в loadAdUnit() функции , чтобы определить , следует ли экземпляр приложения показать (значение параметра true ) или не показывать (значение параметра false ) новый блок вознагражден интерстициальные объявлений.

Быстрый

private func loadAdUnit() {
  let showNewAdFormat = remoteConfig["users"].boolValue
  if showNewAdFormat {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // as per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

Цель-C

- (void)loadAdUnit {
    BOOL showAds = self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;
    if (showAds) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Джава

private void loadAdUnit() {
    boolean showNewAdFormat =
      mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY);

    if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Котлин + KTX

private fun loadAdUnit() {
  var showNewAdFormat = remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

  if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Единство

void LoadAdUnit() {
  bool showNewAdFormat =
      remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue;

  if (showNewAdFormat) {
    // Load Rewarded Interstitial Ad (new implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

Добавьте другие проверки для значения параметра

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

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

Оттуда вы всегда можете проверить значение параметра, используя следующие вызовы:

Быстрый

remoteConfig["showNewAdKey"].boolValue

Цель-C

self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;

Джава

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Котлин + KTX

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Единство

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

Эти вызовы всегда будут возвращать одно и то же значение для экземпляра приложения в зависимости от того, было ли оно помещено в контрольную группу или новую группу вариантов объявления, если в консоли Firebase не были внесены какие-либо изменения, которые были получены и активированы в предыдущих вызовах.




Шаг 2: Настройка теста A / B в консоли Firebase Шаг 4: Запустите A / B тест и тест обзор результатов