البرنامج التعليمي: تحسين تحقيق الدخل المختلط باستخدام AdMob، وGoogle Analytics، وFirebases

الخطوة 3: قم بإعداد Firebase Remote Config لعرض تجارب إعلانات محددة


المقدمة: تحسين تحقيق الدخل المختلط باستخدام AdMob، وGoogle Analytics، وFirebase
الخطوة 1: استخدم AdMob لإنشاء وحدات إعلانية جديدة للعرض
الخطوة 2: إعداد Google Analytics

الخطوة 3: قم بإعداد Firebase Remote Config لعرض تجارب إعلانات محددة


في نهاية الخطوة الأخيرة، تعرفت على جماهير Google Analytics. في هذه الخطوة، ستقوم بإنشاء معلمة Remote Config يتم التحكم فيها منطقيًا (تسمى ad_control_switch ) والتي تعمل على زيادة جمهور "المشترين". ستضيف بعد ذلك المنطق إلى رمز تطبيقك لما يجب أن يعرضه تطبيقك بناءً على قيمة تلك المعلمة.

قم بإعداد معلمات وشروط التكوين عن بعد في وحدة تحكم Firebase

  1. في وحدة تحكم Firebase ، افتح مشروع Firebase الخاص بك.

  2. في الجزء الأيمن، قم بتوسيع قسم المشاركة ، ثم حدد التكوين عن بعد .

  3. انقر فوق إنشاء التكوين (أو إضافة معلمة إذا كنت قد استخدمت التكوين عن بعد من قبل).

  4. في لوحة إنشاء المعلمة ، أكمل الخطوات التالية:

    1. في حقل اسم المعلمة ، أدخل ad_control_switch .

    2. من القائمة المنسدلة Data type ، حدد منطقية .

    3. انقر فوق إنشاء جديد ، ثم حدد إنشاء شرط جديد .

  5. في مربع الحوار تحديد شرط جديد ، أكمل الخطوات التالية:

    1. في حقل الاسم ، أدخل Purchasers Group (أو أي اسم آخر للحالة يمكن التعرف عليه بسهولة).

    2. من القائمة المنسدلة "ينطبق إذا..." ، حدد جمهور (جمهور) المستخدمين .

    3. من القائمة المنسدلة تحديد الجماهير (الجماهير) ، حدد المشترين .

    4. انقر فوق حفظ الشرط .

  6. مرة أخرى في لوحة إنشاء المعلمة ، أكمل الخطوات التالية:

    1. بالنسبة لمجموعة قيمة المشترين ، حدد خطأ .

    2. بالنسبة للقيمة الافتراضية ، حدد صحيح .

  7. انقر فوق حفظ ، ثم انقر فوق نشر التغييرات .

سيتحقق هذا التكوين مما إذا كان المستخدم ضمن جمهور "المشترين" (أي أنهم مستخدمون يدفعون):

  • إذا كان المستخدم ضمن جمهور "المشترين"، فسيقوم Remote Config بإرجاع القيمة false للمعلمة ad_control_switch .

  • إذا لم يكن المستخدم ضمن جمهور "المشترين"، فسيقوم Remote Config بإرجاع القيمة true للمعلمة ad_control_switch .

في الخطوات التالية، ستقوم بتنفيذ Remote Config في تطبيقك للتعامل مع قيم المعلمات هذه.

أضف Remote Config SDK إلى تطبيقك

قبل استخدام Remote Config في رمز التطبيق الخاص بك، أضف Remote Config SDK إلى قاعدة التعليمات البرمجية لتطبيقك. لاحظ أن تطبيقك يجب أن يشتمل بالفعل على Google Mobile Ads (AdMob) SDK وGoogle Analytics for Firebase SDK من الخطوات السابقة في هذا البرنامج التعليمي.

سويفت

قم بإضافة وتثبيت جراب Remote Config في ملف podfile الخاص بك:

pod 'Firebase/RemoteConfig'

ذكري المظهر

أضف تبعية مكتبة Remote Config إلى ملف build.gradle الخاص بك:

implementation 'com.google.firebase:firebase-config:21.6.3'

رفرفة

من جذر مشروع Flutter، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي Remote Config:

flutter pub add firebase_remote_config

وحدة

قم بتنزيل أحدث إصدار من Firebase Unity SDK وتثبيته، ثم قم بإضافة حزمة Remote Config إلى مشروعك:
FirebaseRemoteConfig.unitypackage

تكوين مثيل التكوين عن بعد

لكي يتمكن تطبيقك من استخدام قيم معلمات التكوين عن بعد، قم بتكوين مثيل التكوين عن بعد حتى يتمكن من جلب قيم جديدة لمثيل تطبيق العميل.

في هذا المثال، تم تكوين Remote Config للتحقق من قيم المعلمات الجديدة مرة واحدة كل ساعة.

سويفت

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings

Kotlin+KTX

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

رفرفة

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');
  });

وحدة

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");
}

جلب وتفعيل التكوين عن بعد

قم بإحضار وتنشيط معلمة التكوين عن بعد حتى تتمكن من البدء في استخدام قيم المعلمات الجديدة.

تريد إجراء هذا الاستدعاء في أقرب وقت ممكن في مرحلة تحميل تطبيقك لأن هذا الاستدعاء غير متزامن وتحتاج إلى جلب قيمة التكوين عن بعد مسبقًا حتى يعرف تطبيقك ما إذا كان سيعرض إعلانًا أم لا.

سويفت

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+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()
        }

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();
            }
        });

رفرفة

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();

وحدة

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 التي تم جلبها مسبقًا في وظيفة loadAdUnit() لتحديد ما إذا كان يجب على مثيل التطبيق تنفيذ أحد الإجراءات التالية:

  • تتحول قيمة المعلمة ad_control_switch إلى true : إظهار الإعلان البيني (لأن المستخدم هو مستخدم لا يدفع).

  • تتحول قيمة المعلمة ad_control_switch إلى false : لا تعرض الإعلان (لأن المستخدم هو مستخدم يدفع).

سويفت

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

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

رفرفة

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

وحدة

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 Analytics (إما في وحدة تحكم Firebase أو واجهة مستخدم Google Analytics).


وهذا كل شيء! لقد أكملت البرنامج التعليمي لتحسين تحقيق الدخل المختلط باستخدام AdMob، وGoogle Analytics، وFirebase.




الخطوة 2: إعداد Google Analytics