آموزش: آزمایش فرمت‌های تبلیغات AdMob جدید

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


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

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

مرحله ۴: تست A/B را شروع کنید و نتایج تست را در کنسول Firebase بررسی کنید
مرحله ۵: تصمیم بگیرید که آیا فرمت جدید تبلیغات را اجرا کنید یا خیر


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

SDK های مورد نیاز را اضافه کنید

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

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

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

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

اندروید

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

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

وحدت

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

هدف-سی

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)

وحدت

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

هدف-سی

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

وحدت

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

هدف-سی

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

وحدت

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

برای دریافت هرگونه تغییر در مقدار پارامتر، باید ابتدا فراخوانی‌های fetch و activate انجام شوند - برای مثال، اگر تصمیم به پایان دادن یا ایجاد یک آزمایش جدید دارید.

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

سویفت

remoteConfig["showNewAdKey"].boolValue

هدف-سی

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

Java

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Kotlin

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

وحدت

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

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




مرحله ۲ : تنظیم تست A/B در کنسول Firebase مرحله ۴ : شروع تست A/B و بررسی نتایج تست