مرحله ۳: مدیریت مقادیر پارامتر Remote Config در کد برنامه
| مقدمه: بهینهسازی AdMob تناوب آگهی بااستفاده از Firebase |
| مرحله ۱: از AdMob برای ایجاد انواع واحد آگهی جدید برای آزمایش استفاده کنید |
| مرحله ۲: راهاندازی آزمون آ/ب در کنسول Firebase |
|
مرحله ۳: مدیریت مقادیر پارامتر Remote Config در کد برنامه |
| مرحله ۴: شروع آزمون آ/ب و مرور نتایج آزمون در کنسول Firebase |
| مرحله ۵: تصمیم بگیرید قالب آگهی جدید را عرضه کنید یا نه |
در پایان مرحله آخر، پارامتر Remote Config را ایجاد کردید
(INTERSTITIAL_AD_KEY). در این مرحله، منطق را به کد برنامهتان اضافه میکنید
تا براساس مقدار آن پارامتر، برنامه شما چه چیزی را نمایش دهد.
کیتهای توسعه نرمافزار موردنیاز را اضافه کنید
قبلاز استفاده از Remote Config در کد برنامه، هم کیت توسعه نرمافزار Remote Config و هم کیت توسعه نرمافزار Firebase برای Google Analytics را به فایلهای ساخت پروژه اضافه کنید.
Swift
غلافهای زیر را به فایل غلاف خود اضافه و نصب کنید:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Objective-C
غلافهای زیر را به فایل غلاف خود اضافه و نصب کنید:
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.unitypackageFirebaseRemoteConfig.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() برای تعیین اینکه کدام گونه فراوانی آگهی باید برای این نمونه برنامه نشان داده شود استفاده کنید.
Swift
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.
Objective-C
- (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
}
})
}
Unity
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 را بررسی کنید تا مشخص شود کدام تجربه آگهی بارگیری خواهد شد. برای مثال، میتوانید تصمیم بگیرید که آیا آگهی پساز اینکه کاربر مشاهده آگهی کنونی را تمام کرد مجدد بار شود یا نه.
ابتدا باید تماسهای واکشی و فعالسازی برقرار شود تا تغییرات مقدار پارامتر دریافت شود — برای مثال، اگر تصمیم بگیرید آزمایش جدیدی ایجاد کنید یا آزمایشی را پایان دهید.
از آنجا، همیشه میتوانید مقدار پارامتر را بااستفاده از تماسهای زیر بررسی کنید:
Swift
remoteConfig["INTERSTITIAL_AD_KEY"].stringValue
Objective-C
self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;
Java
mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)
Kotlin
remoteConfig.getString(INTERSTITIAL_AD_KEY)
Unity
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
این تماسها همیشه مقدار یکسانی را برای نمونه برنامه برمیگردانند، بسته به اینکه در گروه کنترل یا یکی از گروههای متغیر آگهی جدید قرار گرفته باشد، مگر اینکه در کنسول Firebase تغییراتی ایجاد شده باشد که در تماسهای قبلی واکشی و فعال شده باشد.
مرحله ۲: راهاندازی کردن آزمون آ/ب در کنسول Firebase مرحله ۴: شروع کردن آزمون آ/ب و بررسی نتایج آزمون