Tutorial: Mengoptimalkan monetisasi campuran menggunakan AdMob, Google Analytics, dan Firebase

Langkah 3: Menyiapkan Firebase Remote Config untuk menampilkan pengalaman iklan tertentu


Pengantar: Mengoptimalkan monetisasi hybrid menggunakan AdMob, Google Analytics, dan Firebase
Langkah 1: Menggunakan AdMob untuk membuat unit iklan baru yang akan ditampilkan
Langkah 2: Menyiapkan Google Analytics

Langkah 3: Menyiapkan Firebase Remote Config untuk menampilkan pengalaman iklan tertentu


Di akhir langkah terakhir, Anda telah mempelajari audiens Google Analytics. Pada langkah ini, Anda akan membuat parameter yang dikontrol boolean Remote Config (disebut ad_control_switch) yang memanfaatkan audiens "Pembeli". Kemudian, Anda akan menambahkan logika ke kode aplikasi untuk hal yang harus ditampilkan aplikasi Anda berdasarkan nilai parameter tersebut.

Menyiapkan Remote Config parameter dan kondisi di Firebase console

  1. Di Firebase console, buka project Firebase Anda.

  2. Di panel sisi kiri, luaskan bagian Engagement, lalu pilih Remote Config.

  3. Klik Create configuration (atau Add parameter jika Anda pernah menggunakan Remote Config sebelumnya).

  4. Di panel Create parameter, selesaikan langkah-langkah berikut:

    1. Di kolom Parameter name, masukkan ad_control_switch.

    2. Dari menu dropdown Data type, pilih Boolean.

    3. Klik Create new, lalu pilih Create new condition.

  5. Di dialog Define a new condition, selesaikan langkah-langkah berikut:

    1. Di kolom Name, masukkan Purchasers Group (atau nama lain yang mudah diidentifikasi untuk kondisi tersebut).

    2. Dari menu dropdown Applies if..., pilih User audience(s).

    3. Dari menu dropdown Select audiences(s), pilih Purchasers.

    4. Klik Save condition.

  6. Kembali ke panel Create parameter, selesaikan langkah-langkah berikut:

    1. Untuk Value dari Purchasers Group, pilih false.

    2. Untuk Default value, pilih true.

  7. Klik Save, lalu Publish changes.

Konfigurasi ini akan memeriksa apakah pengguna berada dalam audiens "Pembeli" (yaitu, mereka adalah pengguna berbayar):

  • Jika pengguna berada dalam audiens "Pembeli", Remote Config akan menampilkan nilai false untuk parameter ad_control_switch.

  • Jika pengguna tidak berada dalam audiens "Pembeli", maka Remote Config akan menampilkan nilai true untuk parameter ad_control_switch.

Pada langkah-langkah berikut, Anda akan mengimplementasikan Remote Config di aplikasi untuk menangani nilai parameter ini.

Tambahkan Remote Config SDK ke aplikasi Anda

Sebelum menggunakan Remote Config dalam kode aplikasi Anda, tambahkan Remote Config SDK ke codebase aplikasi Anda. Perhatikan bahwa aplikasi Anda harus sudah memiliki Google Mobile Ads (AdMob) SDK dan Google Analytics for Firebase SDK dari langkah-langkah sebelumnya dalam tutorial ini.

Swift

Tambahkan dan instal pod Remote Config di podfile Anda:

pod 'Firebase/RemoteConfig'

Android

Tambahkan dependensi library Remote Config ke file build.gradle Anda:

implementation 'com.google.firebase:firebase-config:23.1.0'

Flutter

Dari root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin Remote Config:

flutter pub add firebase_remote_config

Unity

Download dan instal Firebase Unity SDK terbaru, lalu tambahkan paket Remote Config ke project Anda:
FirebaseRemoteConfig.unitypackage

Mengonfigurasi instance Remote Config

Agar aplikasi Anda dapat menggunakan nilai parameter Remote Config, konfigurasikan instance Remote Config agar dapat mengambil nilai baru untuk instance aplikasi klien.

Dalam contoh ini, Remote Config dikonfigurasi untuk memeriksa nilai parameter baru sekali setiap jam.

Swift

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

Kotlin

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

Java

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

Flutter

remoteConfig = FirebaseRemoteConfig.instance;
  final configSettings = FirebaseRemoteConfigSettings(
    minimumFetchInterval: Duration(hours: 1),
  );
  await remoteConfig.setConfigSettings(configSettings);

  // Use the `onConfigUpdated` callback to listen for changes to the config settings.
  remoteConfig.onConfigUpdated.listen((_) {
    print('Config settings confirmed');
  });

Unity

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

Mengambil dan mengaktifkan Remote Config

Ambil dan aktifkan parameter Remote Config agar dapat mulai menggunakan nilai parameter baru.

Sebaiknya lakukan hal ini sedini mungkin dalam fase pemuatan aplikasi Anda karena panggilan ini bersifat asinkron dan Anda akan memerlukan nilai Remote Config yang diambil sebelumnya agar aplikasi dapat mengetahui apakah akan menampilkan iklan atau tidak.

Swift

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

Kotlin

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

Java

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

Flutter

remoteConfig = FirebaseRemoteConfig.instance;

// Fetch and activate the latest Remote Config values.
final updated = await remoteConfig.fetchAndActivate();

// Check if the config params were updated successfully.
if (updated) {
  print('Config params updated');
} else {
  print('Config params failed to update');
}

// Load the ad unit.
_loadAdUnit();

Unity

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

Aplikasi Anda kini dikonfigurasi untuk menangani parameter Remote Config yang Anda buat sebelumnya pada langkah ini.

Menggunakan nilai parameter Remote Config

Gunakan nilai Remote Config yang diambil sebelumnya dalam fungsi loadAdUnit() untuk menentukan apakah instance aplikasi harus melakukan salah satu hal berikut:

  • Nilai parameter ad_control_switch di-resolve ke true: tampilkan iklan interstisial (karena pengguna adalah pengguna non-berbayar).

  • Nilai parameter ad_control_switch di-resolve ke false: jangan tampilkan iklan (karena pengguna adalah pengguna berbayar).

Swift

private func loadAdUnit() {
  let showAds = remoteConfig["ad_control_switch"].boolValue

  if showAds {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Kotlin

private fun loadAdUnit() {
  var showAds = remoteConfig.getBoolean(ad_control_switch)

  if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}

Java

private void loadAdUnit() {
    boolean showAds =
      mFirebaseRemoteConfig.getBoolean(ad_control_switch);

    if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}

Flutter

void _loadAdUnit() {
  bool showAds = remoteConfig.getBool(ad_control_switch);

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Unity

void LoadAdUnit() {
  bool showAds =
      remoteConfig.GetValue("ad_control_switch").BooleanValue;

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Merilis aplikasi Anda

Karena logika untuk menampilkan iklan atau tidak berada dalam codebase Anda, Anda harus merilis versi baru aplikasi yang berisi logika ini.

Jika Anda mengikuti langkah-langkah dalam tutorial ini, aplikasi Anda akan segera mulai menayangkan pengalaman iklan dalam aplikasi yang disesuaikan kepada pengguna. Anda dapat memantau pendapatan iklan di akun AdMob dan di dasbor Google Analytics (baik di konsol Firebase maupun UI Google Analytics).


Sudah selesai! Anda telah menyelesaikan tutorial untuk mengoptimalkan monetisasi hybrid menggunakan AdMob, Google Analytics, dan Firebase.




Langkah 2: Menyiapkan Google Analytics