الخطوة 3: إعداد Firebase Remote Config لعرض تجارب إعلانية محدّدة
المقدمة: تحسين نموذج تحقيق الأرباح المختلط باستخدام AdMob وGoogle Analytics وFirebase |
الخطوة 1: استخدِم AdMob لإنشاء وحدات إعلانية جديدة لعرض الإعلانات. |
الخطوة 2: إعداد "إحصاءات Google" |
الخطوة 3: إعداد Firebase Remote Config لعرض تجارب إعلانية محدّدة |
في نهاية الخطوة الأخيرة، تعرّفت على شرائح جمهور "إحصاءات Google". في
هذه الخطوة، ستنشئ مَعلمة Remote Config يتم التحكّم فيها باستخدام مَعلمة منطقية
(تُسمى ad_control_switch
) تستفيد من شريحة الجمهور "المشترون". بعد ذلك،
ستضيف المنطق إلى رمز تطبيقك لما يجب أن يعرضه تطبيقك استنادًا إلى
قيمة تلك المَعلمة.
إعداد مَعلمات Remote Config وشروطها في وحدة تحكّم Firebase
في وحدة تحكُّم Firebase، افتح مشروعك على Firebase.
في اللوحة على يمين الصفحة، وسِّع قسم التفاعل، ثم اختَر Remote Config (الإعداد عن بُعد).
انقر على إنشاء إعداد (أو إضافة مَعلمة إذا سبق لك استخدام Remote Config).
في لوحة إنشاء مَعلمة، أكمِل الخطوات التالية:
في حقل اسم المَعلمة، أدخِل
ad_control_switch
.من القائمة المنسدلة
Data type
، اختَر Boolean.انقر على إنشاء جديد، ثم على إنشاء شرط جديد.
في مربّع الحوار تحديد شرط جديد، أكمِل الخطوات التالية:
في حقل الاسم، أدخِل
Purchasers Group
(أو أي اسم آخر يمكن تمييزه بسهولة للحالة).من القائمة المنسدلة ينطبق في حال...، اختَر شرائح جمهور المستخدِمين.
من القائمة المنسدلة اختيار شرائح الجمهور، اختَر المشترون.
انقر على حفظ الشرط.
في لوحة إنشاء مَعلمة، أكمِل الخطوات التالية:
بالنسبة إلى القيمة لمجموعة المشترين، اختَر false.
بالنسبة إلى القيمة التلقائية، اختَر true.
انقر على حفظ، ثم على نشر التغييرات.
سيتحقّق هذا الإعداد ممّا إذا كان المستخدِم ضِمن شريحة جمهور "المشترون" (أي أنّه مستخدِم يدفع رسومًا):
إذا كان المستخدِم ضِمن شريحة الجمهور "المشترون"، ستُعرِض Remote Config قيمة
false
للمَعلمةad_control_switch
.إذا لم يكن المستخدِم في شريحة الجمهور "المشترون"، ستُعرِض الدالة Remote Config القيمة
true
للمَعلمةad_control_switch
.
في الخطوات التالية، ستنفّذ Remote Config في تطبيقك لمعالجة قيم هذه المَعلمات.
إضافة حزمة تطوير البرامج (SDK) لمنصّة Remote Config إلى تطبيقك
قبل استخدام Remote Config في رمز تطبيقك، أضِف حزمة تطوير البرامج (SDK) لتطبيق Remote Config إلى قاعدة بيانات تطبيقك. يُرجى العِلم أنّ تطبيقك يجب أن يحتوي على حزمة تطوير البرامج (SDK) لمنصّة Google Mobile Ads (AdMob) وحزمة تطوير البرامج (SDK) الخاصة بخدمة "إحصاءات Google لبرنامج Firebase" من الخطوات السابقة في هذا الدليل التعليمي.
Swift
أضِف مجموعة الإعلانات المتسلسلة Remote Config وثبِّتها في ملف podfile:
pod 'Firebase/RemoteConfig'
Android
أضِف الاعتماد على مكتبة Remote Config إلى ملف build.gradle
:
implementation 'com.google.firebase:firebase-config:22.0.1'
Flutter
من جذر مشروع Flutter، شغِّل الأمر التالي لتثبيت المكوّن الإضافي Remote Config:
flutter pub add firebase_remote_config
Unity
نزِّل أحدث إصدار من
حزمة تطوير البرامج (SDK) لمنصّة Firebase في Unity وثبِّتها، ثم أضِف
حزمة Remote Config إلى مشروعك:
FirebaseRemoteConfig.unitypackage
ضبط نسخة Remote Config
لكي يتمكّن تطبيقك من استخدام قيم مَعلمة Remote Config، عليك ضبط مثيل Remote Config لكي يتمكّن من استرجاع قيم جديدة لمثيل تطبيق العميل.
في هذا المثال، تم ضبط Remote Config للبحث عن قيم مَعلمات جديدة مرة واحدة كل ساعة.
Swift
remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings
Kotlin
remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)
Java
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(3600)
.build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Flutter
remoteConfig = FirebaseRemoteConfig.instance;
final configSettings = FirebaseRemoteConfigSettings(
minimumFetchInterval: Duration(hours: 1),
);
await remoteConfig.setConfigSettings(configSettings);
// Use the `onConfigUpdated` callback to listen for changes to the config settings.
remoteConfig.onConfigUpdated.listen((_) {
print('Config settings confirmed');
});
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()
}
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()
}
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();
}
});
Flutter
remoteConfig = FirebaseRemoteConfig.instance;
// Fetch and activate the latest Remote Config values.
final updated = await remoteConfig.fetchAndActivate();
// Check if the config params were updated successfully.
if (updated) {
print('Config params updated');
} else {
print('Config params failed to update');
}
// Load the ad unit.
_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 التي أنشأتها في وقت سابق من هذه الخطوة.
استخدام قيمة المَعلمة Remote Config
استخدِم قيمة Remote Config التي تم استرجاعها مسبقًا في دالة loadAdUnit()
لتحديد ما إذا كان يجب أن تُجري نسخة التطبيق الافتراضية أحد الإجراءات التالية:
يتمّ حلّ قيمة المَعلمة
ad_control_switch
على أنّهاtrue
: عرض الإعلان البيني (لأنّ المستخدم من مستخدمي الإصدارات المجانية).يتمّ تحويل قيمة المَعلمة
ad_control_switch
إلىfalse
: لا تعرِض الإعلان (لأنّ المستخدِم مستخدِم يدفع رسومًا).
Swift
private func loadAdUnit() {
let showAds = remoteConfig["ad_control_switch"].boolValue
if showAds {
// Load interstitial ad (implemented ad unit)
// per AdMob instructions (the first step of this tutorial).
} else {
// Don't show ads.
}
}
Kotlin
private fun loadAdUnit() {
var showAds = remoteConfig.getBoolean(ad_control_switch)
if (showAds) {
// Load interstitial ad (implemented ad unit)
// per AdMob instructions (the first step of this tutorial).
} else {
// Don't show ads.
}
}
Java
private void loadAdUnit() {
boolean showAds =
mFirebaseRemoteConfig.getBoolean(ad_control_switch);
if (showAds) {
// Load interstitial ad (implemented ad unit)
// per AdMob instructions (the first step of this tutorial).
} else {
// Don't show ads.
}
}
Flutter
void _loadAdUnit() {
bool showAds = remoteConfig.getBool(ad_control_switch);
if (showAds) {
// Load interstitial ad (implemented ad unit)
// per AdMob instructions (the first step of this tutorial).
} else {
// Don't show ads.
}
}
Unity
void LoadAdUnit() {
bool showAds =
remoteConfig.GetValue("ad_control_switch").BooleanValue;
if (showAds) {
// Load interstitial ad (implemented ad unit)
// per AdMob instructions (the first step of this tutorial).
} else {
// Don't show ads.
}
}
إطلاق تطبيقك
بما أنّ منطق عرض الإعلان أو عدم عرضه مضمّن في قاعدة بياناتك، عليك إصدار نسخة جديدة من تطبيقك تحتوي على هذا المنطق.
إذا اتّبعت خطوات هذا الدليل التعليمي، من المفترض أن يبدأ تطبيقك على الفور في عرض تجربة إعلانات مخصّصة داخل التطبيق للمستخدمين. يمكنك تتبُّع أرباح إعلاناتك في كلّ من حسابك على AdMob ولوحات بيانات "إحصاءات Google" (إما في وحدة تحكّم Firebase أو واجهة مستخدِم "إحصاءات Google").
هذا كل ما في الأمر. لقد أكملت الدليل التعليمي لتحسين تحقيق الربح المختلط باستخدام AdMob و"إحصاءات Google" وFirebase.
مراجع ذات صلة
اطّلِع على أدلة الحلول الأخرى:
مشاهدة سلسلة فيديوهات: زيادة أرباح تطبيقك باستخدام Firebase و AdMob
الخطوة 2: إعداد "إحصاءات Google"