查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

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

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


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

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

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


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

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

قبل از استفاده از Remote Config در کد برنامه خود، Remote Config SDK و Firebase SDK for 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'

Java

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

implementation 'com.google.android.gms:play-services-ads:21.3.0'
implementation 'com.google.firebase:firebase-analytics:21.2.0'
implementation 'com.google.firebase:firebase-config:21.2.0'

Kotlin+KTX

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

implementation 'com.google.android.gms:play-services-ads:21.3.0'
implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
implementation 'com.google.firebase:firebase-config-ktx:21.2.0'

وحدت

Firebase Unity SDK را دانلود و نصب کنید، سپس بسته های Unity زیر را به پروژه خود اضافه کنید:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

پیکربندی نمونه پیکربندی از راه دور

برای استفاده از مقادیر پارامتر 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;

Java

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

Kotlin+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];
}];

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

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

Java

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Kotlin+KTX

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

وحدت

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

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




مرحله 2 : یک تست A/B را در کنسول Firebase تنظیم کنید مرحله 4 : تست A/B را شروع کنید و نتایج آزمایش را مرور کنید