آموزش گام‌به‌گام: آزمایش پذیرش قالب‌های آگهی جدید AdMob

مرحله ۳: مدیریت مقادیر پارامتر Remote Config در کد برنامه


مقدمه: آزمایش پذیرش قالب آگهی AdMob جدید بااستفاده از Firebase
مرحله ۱: استفاده از AdMob برای ایجاد گونه واحد آگهی جدید برای آزمایش
مرحله ۲: راه‌اندازی آزمون آ/ب در کنسول Firebase

مرحله ۳: مدیریت مقادیر پارامتر Remote Config در کد برنامه

مرحله ۴: شروع آزمون آ/ب و مرور نتایج آزمون در کنسول Firebase
مرحله ۵: تصمیم بگیرید قالب آگهی جدید را عرضه کنید یا نه


در پایان مرحله آخر، پارامتر Remote Config را ایجاد کردید (SHOW_NEW_AD_KEY). در این مرحله، منطق را به کد برنامه‌تان اضافه می‌کنید تا براساس مقدار آن پارامتر، برنامه چه چیزی را نمایش دهد — true (آگهی جدید را نشان بده) دربرابر false (آگهی جدید را نشان نده).

کیت‌های توسعه نرم‌افزار موردنیاز را اضافه کنید

قبل‌از استفاده از Remote Config در کد برنامه، هم کیت توسعه نرم‌افزار Remote Config و هم کیت توسعه نرم‌افزار Firebase برای Google Analytics را به فایل‌های ساخت پروژه اضافه کنید.

پلاتفرم‌های Apple

غلاف‌های زیر را به فایل غلاف خود اضافه و نصب کنید:

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

Android

وابستگی‌های کتابخانه زیر را به فایل build.gradle خود اضافه کنید:

implementation 'com.google.android.gms:play-services-ads:25.5.0'
implementation 'com.google.firebase:firebase-analytics:23.2.0'
implementation 'com.google.firebase:firebase-config:23.1.0'

Unity

«کیت توسعه نرم‌افزار Firebase Unity» را بارگیری و نصب کنید، سپس بسته‌های Unity زیر را به پروژه‌تان اضافه کنید:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

پیکربندی نمونه Remote Config

برای استفاده از مقادیر پارامتر Remote Config، نمونه Remote Config را پیکربندی کنید تا برای واکشی مقادیر جدید برای نمونه برنامه مشتری راه‌اندازی شود.

در این مثال، Remote Config پیکربندی شده است تا مقادیر پارامتر جدید را هر ساعت یک‌بار بررسی کند.

Swift

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

Objective-C

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

Java

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

Kotlin

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

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

Objective-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];
}];

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

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

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 را که در طول راه‌اندازی آزمایش A/B در ابتدای این آموزش ایجاد کردید مدیریت کند.

استفاده از مقدار پارامتر Remote Config

از مقدار پیش‌واکشی‌شده Remote Config در تابع loadAdUnit() استفاده کنید تا تعیین کنید آیا نمونه برنامه باید واحد آگهی بینابینی پاداش‌دار جدید را نشان دهد (مقدار پارامتر true) یا نشان ندهد (مقدار پارامتر false).

Swift

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

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

Java

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

Kotlin

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

Unity

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 را بررسی کنید تا مشخص شود کدام تجربه آگهی بارگیری خواهد شد. برای مثال، می‌توانید تصمیم بگیرید که آیا آگهی پس‌از اینکه کاربر مشاهده آگهی کنونی را تمام کرد مجدد بار شود یا نه.

ابتدا باید تماس‌های واکشی و فعال‌سازی برقرار شود تا تغییرات مقدار پارامتر دریافت شود — برای مثال، اگر تصمیم بگیرید آزمایش جدیدی ایجاد کنید یا آزمایشی را پایان دهید.

از آنجا، همیشه می‌توانید مقدار پارامتر را بااستفاده از تماس‌های زیر بررسی کنید:

Swift

remoteConfig["showNewAdKey"].boolValue

Objective-C

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

Java

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Kotlin

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Unity

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

این تماس‌ها همیشه مقدار یکسانی را برای نمونه برنامه برمی‌گردانند، بسته به اینکه در گروه کنترل یا گروه متغیر آگهی جدید قرار گرفته باشد، مگر اینکه در کنسول Firebase تغییراتی ایجاد شده باشد که در تماس‌های قبلی واکشی و فعال شده باشد.




مرحله ۲: راه‌اندازی کردن آزمون آ/ب در کنسول Firebase مرحله ۴: شروع کردن آزمون آ/ب و بررسی نتایج آزمون