מדריך: אופטימיזציה של המונטיזציה ההיברידית באמצעות AdMob , Google Analytics ו-Firebase

שלב 3: מגדירים את Firebase Remote Config כך שיציג חוויות ספציפיות של הצגת מודעות


מבוא: אופטימיזציה משולבת מונטיזציה באמצעות AdMob, Google Analytics ו-Firebase
שלב 1: משתמשים ב-AdMob כדי ליצור יחידות של מודעות חדשות להצגה
שלב 2: הגדרה ב-Google Analytics

שלב 3: הגדרה Firebase Remote Config כדי להציג חוויות ספציפיות של מודעות


בסוף השלב האחרון למדתם על הקהלים ב-Google Analytics. לחשבון בשלב הזה יוצרים פרמטר Remote Config בשליטה בוליאנית (שנקראת ad_control_switch) שמשתמשת ב'רוכשים' הקהל. אפשר לאחר מכן צריך להוסיף את הלוגיקה לקוד האפליקציה כדי לקבוע מה יוצג באפליקציה בהתאם בערך של הפרמטר הזה.

הגדרת תנאים ופרמטרים של Remote Config במסוף Firebase

  1. במסוף Firebase, פותחים את פרויקט Firebase.

  2. בחלונית הימנית, מרחיבים את הקטע Engage ובוחרים באפשרות Remote Config.

  3. לוחצים על Create configuration (או על Add parameter אם כבר השתמשתם ב-Remote Config).

  4. בחלונית Create parameter, מבצעים את הפעולות הבאות:

    1. בשדה שם הפרמטר, מזינים ad_control_switch.

    2. בתפריט הנפתח Data type בוחרים באפשרות Boolean (בוליאני).

    3. לוחצים על יצירת תנאי חדש ואז בוחרים באפשרות יצירת תנאי חדש.

  5. בתיבת הדו-שיח Configure a new condition, מבצעים את השלבים הבאים:

    1. בשדה Name, מזינים Purchasers Group (או כל סוג אחר של שם בקלות) שם מזהה של התנאי).

    2. בתפריט הנפתח Applies if..., בוחרים באפשרות קהלי משתמשים.

    3. בתפריט הנפתח בחירת קהלים, בוחרים באפשרות רוכשים.

    4. לוחצים על שמירת התנאי.

  6. חוזרים לחלונית יצירת פרמטר ומבצעים את השלבים הבאים:

    1. בשדה Value של קבוצת הרוכשים, בוחרים באפשרות false.

    2. בשדה ערך ברירת מחדל, בוחרים באפשרות true.

  7. לוחצים על שמירה ואז על פרסום השינויים.

ההגדרה הזו תבדוק אם המשתמש נכלל ב'רוכשים' קהל (כלומר, המשתמשים משלמים):

  • אם המשתמש נכלל ב'רוכשים' הקהל, ואז Remote Config מחזירה את הערך של false עבור הפרמטר ad_control_switch.

  • אם המשתמש לא נכלל בכרטיסייה 'רוכשים' קהל, ולאחר מכן Remote Config הפונקציה תחזיר את הערך true עבור הפרמטר ad_control_switch.

בשלבים הבאים תבצעו הטמעה של Remote Config באפליקציה כדי לטפל בערכי הפרמטרים האלה.

מוסיפים את ה-SDK של Remote Config לאפליקציה

לפני שמשתמשים ב-Remote Config בקוד האפליקציה, צריך להוסיף את הפקודה SDK אחד (Remote Config) ל-codebase של האפליקציה. לתשומת ליבכם: האפליקציה כבר אמורה לפעול את Google Mobile Ads (AdMob) SDK ואת ה-SDK של Google Analytics for Firebase מהשלבים הקודמים במדריך הזה.

Swift

מוסיפים ומתקינים את רצף המודעות Remote Config בקובץ ה-pod:

pod 'Firebase/RemoteConfig'

Android

מוסיפים את התלות של הספרייה Remote Config לקובץ build.gradle:

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

Flutter

מהשורש של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין Remote Config:

flutter pub add firebase_remote_config

Unity

מורידים ומתקינים את הגרסה העדכנית ביותר Firebase Unity SDK, ואז מוסיפים חבילת Remote Config לפרויקט שלך:
FirebaseRemoteConfig.unitypackage

מגדירים את המכונה Remote Config

כדי שהאפליקציה תוכל להשתמש בערכי הפרמטר Remote Config, צריך להגדיר את מכונה Remote Config כדי לאחזר ערכים חדשים עבור אפליקציית הלקוח מכונה.

בדוגמה הזו, Remote Config מוגדר לבדוק ערכים חדשים של פרמטרים פעם בשעה.

Swift

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

Kotlin+KTX

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

אחזור והפעלה של Remote Config

מאחזרים את הפרמטר Remote Config ומפעילים אותו כדי להתחיל להשתמש בו את ערכי הפרמטרים החדשים.

אתה רוצה לבצע את השיחה הזו בהקדם האפשרי בשלב הטעינה של האפליקציה כי השיחה הזו אסינכרונית וצריך להשתמש בערך Remote Config מאוחזרות מראש כדי לאפשר לאפליקציה לדעת אם להציג מודעה.

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

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

האפליקציה שלך מוגדרת עכשיו לטפל בפרמטר Remote Config שנוצר מוקדם יותר בשלב הזה.

שימוש בערך הפרמטר Remote Config

משתמשים בערך Remote Config שאוחזר מראש בפונקציה loadAdUnit() כדי לקבוע אם מופע האפליקציה צריך לבצע אחת מהפעולות הבאות:

  • ערך הפרמטר ad_control_switch מומר לערך true: הצגת המודעה המעברון (כי המשתמש הוא משתמש שלא משלם).

  • ערך הפרמטר ad_control_switch פונה ל-false: אין להציג את המודעה (מכיוון שהמשתמש הוא משתמש משלם).

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+KTX

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

פרסום האפליקציה

הלוגיקה להצגת המודעה או לא הצגת המודעה נופלת ב-codebase שלכם, לכן עליכם לפרסם גרסה חדשה של האפליקציה עם הלוגיקה הזו.

אם פעלת לפי השלבים של המדריך הזה, האפליקציה אמורה להתחיל לפעול מיד כדי להציג למשתמשים חוויה מותאמת אישית של מודעות בתוך האפליקציה. אפשר לעקוב אחר הכנסות מפרסום גם בחשבון AdMob וגם ב-Google Analytics מרכזי שליטה (במסוף Firebase או בממשק המשתמש של Google Analytics).


וזהו! סיימתם את המדריך לאופטימיזציה של מונטיזציה היברידית באמצעות AdMob,‏ Google Analytics ו-Firebase.




שלב 2: הגדרת Google Analytics