برنامج تعليمي: اختبار استخدام أشكال إعلانات AdMob الجديدة

الخطوة 3: التعامل مع قيم مَعلمات Remote Config في رمز تطبيقك


المقدمة: اختبار اعتماد شكل الإعلان AdMob الجديد باستخدام Firebase
الخطوة 1: استخدِم AdMob لإنشاء صيغة وحدة إعلانية جديدة للاختبار.
الخطوة 2: إعداد تجربة أ/ب في وحدة تحكّم Firebase

الخطوة 3: التعامل مع قيم المَعلمة Remote Config في رمز تطبيقك

الخطوة 4: البدء اختبار أ/ب ومراجعة نتائج الاختبار في وحدة تحكّم Firebase
الخطوة 5: تحديد ما إذا كنت تريد طرح شكل الإعلان الجديد


في نهاية الخطوة الأخيرة، أنشأتَ مَعلمة Remote Config. (SHOW_NEW_AD_KEY). في هذه الخطوة، عليك إضافة منطق إلى رمز تطبيقك ما يجب أن يعرضه تطبيقك استنادًا إلى قيمة تلك المَعلمة: true (اعرض الإعلان الجديد) مقابل false (عدم عرض الإعلان الجديد).

إضافة حِزم تطوير البرامج (SDK) المطلوبة

قبل استخدام Remote Config في رمز تطبيقك، أضِف كلّ من حزمة تطوير البرامج (SDK) لنظام التشغيل Remote Config وحزمة تطوير البرامج (SDK) لمنصّة Google Analytics إلى ملفات إنشاء مشروعك.

منصات Apple

أضِف المجموعات التالية وثبِّتها في ملف podfile:

pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'

Android

أضِف مكتبات الاعتماد التالية إلى ملف build.gradle:

implementation 'com.google.android.gms:play-services-ads:23.4.0'
implementation 'com.google.firebase:firebase-analytics:22.1.2'
implementation 'com.google.firebase:firebase-config:22.0.0'

Unity

نزِّل حزمة Firebase Unity SDK وثبِّتها، ثم أضِف حِزم Unity التالية إلى مشروعك:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.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+KTX

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

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() من أجل: تحديد ما إذا كان يجب عرض مثيل التطبيق (قيمة المَعلمة true) أو لا تعرض (قيمة المَعلمة false) الوحدة الإعلانية الجديدة للإعلانات البينية التي تضم مكافأة.

Swift

private func loadAdUnit() {
  let showNewAdFormat = remoteConfig["users"].boolValue
  if showNewAdFormat {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // as per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

Objective-C

- (void)loadAdUnit {
    BOOL showAds = self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;
    if (showAds) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Java

private void loadAdUnit() {
    boolean showNewAdFormat =
      mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY);

    if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Kotlin+KTX

private fun loadAdUnit() {
  var showNewAdFormat = remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

  if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Unity

void LoadAdUnit() {
  bool showNewAdFormat =
      remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue;

  if (showNewAdFormat) {
    // Load Rewarded Interstitial Ad (new implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

إضافة عمليات تحقّق أخرى لقيمة المَعلمة

هناك مناطق أخرى في رمز الطلب ستحتاج إلى التحقق من قيمة مَعلمة Remote Config هذه لتحديد تجربة الإعلان التي ستكون التحميل. على سبيل المثال، يمكنك تحديد ما إذا كنت تريد إعادة تحميل إعلان بعد أن ينتهي المستخدِم من عرض الإعلان الحالي.

يجب إجراء طلبات الجلب والتفعيل أولاً للحصول على أي قيمة للمَعلمة. التغييرات — على سبيل المثال، إذا قررت إنهاء تجربة جديدة أو إنشائها.

من هناك، يمكنك دائمًا التحقّق من قيمة المَعلمة باستخدام الطلبات التالية:

Swift

remoteConfig["showNewAdKey"].boolValue

Objective-C

self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;

Java

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Kotlin+KTX

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Unity

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

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




الخطوة 2: إعداد اختبار أ/ب في وحدة تحكّم Firebase الخطوة 4: بدء اختبار أ/ب مراجعة نتائج الاختبار