مرحله 3: مقادیر پارامتر Remote Config را در کد برنامه خود مدیریت کنید
مقدمه: فرکانس تبلیغات AdMob را با استفاده از Firebase بهینه کنید |
مرحله 1: از AdMob برای ایجاد انواع واحدهای تبلیغاتی جدید برای آزمایش استفاده کنید |
مرحله 2: تست A/B را در کنسول Firebase تنظیم کنید |
مرحله 3: مقادیر پارامتر Remote Config را در کد برنامه خود مدیریت کنید |
مرحله 4: تست A/B را شروع کنید و نتایج تست را در کنسول Firebase بررسی کنید |
مرحله 5: تصمیم بگیرید که آیا قالب تبلیغات جدید را منتشر کنید یا خیر |
در پایان آخرین مرحله، یک پارامتر Remote Config ( INTERSTITIAL_AD_KEY
) ایجاد کردید. در این مرحله، منطقی را به کد برنامه خود اضافه می کنید که برنامه شما باید براساس مقدار آن پارامتر نمایش دهد.
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'
اندروید
وابستگی های کتابخانه زیر را به فایل build.gradle
خود اضافه کنید:
implementation 'com.google.android.gms:play-services-ads:23.3.0'
implementation 'com.google.firebase:firebase-analytics:22.1.0'
implementation 'com.google.firebase:firebase-config:22.0.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
هدف-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()
استفاده کنید تا مشخص کنید کدام نوع فرکانس تبلیغات باید برای این نمونه برنامه نشان داده شود.
سویفت
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.
هدف-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+KTX
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 را بررسی کنید تا مشخص کنید کدام تجربه تبلیغاتی بارگیری می شود. به عنوان مثال، می توانید تصمیم بگیرید که آیا بعد از اینکه کاربر مشاهده آگهی فعلی را به پایان رساند، مجدداً یک آگهی بارگیری کنید یا خیر.
واکشی و فعالسازی تماسها باید ابتدا انجام شود تا تغییرات مقدار پارامتر دریافت شود - برای مثال، اگر تصمیم دارید آزمایش جدیدی را پایان دهید یا ایجاد کنید.
از آنجا، همیشه می توانید مقدار پارامتر را با استفاده از فراخوانی های زیر بررسی کنید:
سویفت
remoteConfig["INTERSTITIAL_AD_KEY"].stringValue
هدف-C
self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;
Java
mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)
Kotlin+KTX
remoteConfig.getString(INTERSTITIAL_AD_KEY)
وحدت
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
این تماسها همیشه مقدار یکسانی را برای یک نمونه برنامه برمیگردانند، بسته به اینکه در گروه کنترل یا یکی از گروههای جدید تبلیغاتی قرار گرفته باشد، مگر اینکه تغییراتی در کنسول Firebase ایجاد شده باشد که در تماسهای قبلی واکشی و فعال شده باشد.
Firebase تنظیم کنید مرحله 2 : یک تست A/B را در کنسول مرحله 4 : تست A/B را شروع کنید و نتایج آزمایش را مرور کنید