مرحله ۳: مدیریت مقادیر پارامترهای Remote Config در کد برنامه شما
| مقدمه: بهینه سازی فراوانی تبلیغات AdMob با استفاده از Firebase |
| مرحله ۱: AdMob برای ایجاد انواع واحدهای تبلیغاتی جدید برای آزمایش استفاده کنید |
| مرحله ۲: یک تست A/B در کنسول Firebase تنظیم کنید |
مرحله ۳: مدیریت مقادیر پارامترهای Remote Config در کد برنامه شما |
| مرحله ۴: تست A/B را شروع کنید و نتایج تست را در کنسول Firebase بررسی کنید |
| مرحله ۵: تصمیم بگیرید که آیا فرمت جدید تبلیغات را اجرا کنید یا خیر |
در پایان مرحله قبل، شما یک پارامتر Remote Config ( INTERSTITIAL_AD_KEY ) ایجاد کردید. در این مرحله، منطق مربوط به آنچه برنامه شما باید بر اساس مقدار آن پارامتر نمایش دهد را به کد برنامه خود اضافه خواهید کرد.
SDK های مورد نیاز را اضافه کنید
قبل از استفاده از Remote Config در کد برنامه خود، هم Remote Config SDK و هم Firebase SDK برای Google Analytics را به فایلهای ساخت پروژه خود اضافه کنید.
سویفت
پادهای زیر را در فایل پاد خود اضافه و نصب کنید:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
هدف-سی
پادهای زیر را در فایل پاد خود اضافه و نصب کنید:
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() برای تعیین اینکه کدام نوع فرکانس تبلیغ باید برای این نمونه برنامه نمایش داده شود، استفاده کنید.
سویفت
private func loadAdUnit() {
let adUnitId = remoteConfig["INTERSTITIAL_AD_KEY"].stringValue;
let request = GADRequest()
GADInterstitialAd.load(withAdUnitID: adUnitId,
request: request,
completionHandler: { [self] ad, error in
if let error = error {
print("Failed to load: \(error.localizedDescription)")
return
}
interstitial = ad
// Register for callbacks.
}
)
}
// Register for callbacks.
هدف-سی
- (void)loadAdUnit {
NSString *adUnitId =
self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;
GADRequest *request = [GADRequest request];
[GADInterstitialAd loadAdWithAdUnitId:adUnitId
request:request
completionHandler:^(GADInterstitialAd *ad,
NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@",
[error localizedDescription]);
return;
}
self.interstitial = ad;
}];
}
Java
private void loadAdUnit() {
String adUnitId =
mFirebaseRemoteConfig.getString("INTERSTITIAL_AD_KEY");
// Load Interstitial Ad (assume adUnitId not null)
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this, adUnitId, adRequest, new
InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd intertitialAd) {
mInterstitialAd = interstitialAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
mInterstitialAd = null;
}
});
}
Kotlin
private fun loadAdUnit() {
String adUnitId = remoteConfig.getString("INTERSTITIAL_AD_KEY")
var adRequest = AdRequestBuilder.Builder().build()
AdRequestBuilder.load(this, adUnitId, adRequest, object :
InterstitialAdLoadCallback() {
override fun onAdFailedToLoad(adError: LoadAdError) {
mInterstitialAd = null
}
override fun onAdLoaded(interstitialAd: InterstitialAd) {
mInterstitialAd = interstitialAd
}
})
}
وحدت
void LoadAdUnit() {
// Note that you may want to encode and parse two sets of ad unit IDs for
// Android / iOS in the Unity implementation.
String adUnitId = remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue;
this.interstitial = new InterstitialAd(adUnitId);
}
بررسیهای دیگری را برای مقدار پارامتر اضافه کنید
بخشهای دیگری در کد برنامه شما وجود دارد که باید مقدار این پارامتر Remote Config را بررسی کنید تا مشخص کنید کدام تجربه تبلیغاتی بارگذاری شود. برای مثال، میتوانید تصمیم بگیرید که آیا یک تبلیغ پس از پایان مشاهده کاربر از تبلیغ فعلی، دوباره بارگذاری شود یا خیر.
برای دریافت هرگونه تغییر در مقدار پارامتر، باید ابتدا فراخوانیهای fetch و activate انجام شوند - برای مثال، اگر تصمیم به پایان دادن یا ایجاد یک آزمایش جدید دارید.
از آنجا، همیشه میتوانید مقدار پارامتر را با استفاده از فراخوانیهای زیر بررسی کنید:
سویفت
remoteConfig["INTERSTITIAL_AD_KEY"].stringValue
هدف-سی
self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;
Java
mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)
Kotlin
remoteConfig.getString(INTERSTITIAL_AD_KEY)
وحدت
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
این فراخوانیها بسته به اینکه آیا یک نمونه برنامه در گروه کنترل قرار گرفته باشد یا یکی از گروههای جدید نوع تبلیغ، همیشه مقدار یکسانی را برمیگردانند، مگر اینکه تغییراتی در کنسول Firebase ایجاد شده باشد که در فراخوانیهای قبلی واکشی و فعال شده باشد.
مرحله ۲ : تنظیم تست A/B در کنسول Firebase مرحله ۴ : شروع تست A/B و بررسی نتایج تست