الإعلانات البينية بمكافأة

اختيار النظام الأساسي: Android iOS Unity Flutter Android (الإصدار القديم)

الإعلان البيني مقابل مكافأة هو نوع من أشكال الإعلانات المحفَّزة التي تتيح لك تقديم مكافآت للإعلانات التي تظهر تلقائيًا أثناء عمليات النقل العادية للتطبيقات. وعلى عكس الإعلانات بمكافأة، لا يُطلب من المستخدمين الموافقة على عرض إعلان بيني بمكافأة. يوضّح هذا الدليل كيفية دمج "الإعلانات البينية بمكافأة" من Ad Manager في تطبيق Flutter.

المتطلبات الأساسية

قبل المتابعة، يُرجى اتّخاذ الإجراءات التالية:

  • تثبيت الإصدار 1.1.0 أو إصدار أحدث من مكوّن Flutter الإضافي
  • إعداد Google Mobile Ads Flutter Plugin. يجب استيراد Google Mobile Ads Flutter Plugin إلى تطبيق Flutter.

الاختبار دائمًا باستخدام الإعلانات الاختبارية

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

أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصّص للإعلانات البينية بمكافأة:

  • /21775744923/example/rewarded-interstitial

تم إعداد الوحدات الإعلانية الاختبارية لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامها في تطبيقاتك الخاصة أثناء الترميز والاختبار وتحديد الأخطاء وحلّها. ما عليك سوى استبدالها بأرقام تعريف الوحدات الإعلانية الخاصة بك قبل نشر تطبيقك.

تحميل إعلان

يعرض المثال التالي كيفية تحميل "إعلان بيني مقابل مكافأة":

RewardedInterstitialAd.load(
  adUnitId: "_adUnitId",
  request: const AdManagerAdRequest(),
  rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback(
    onAdLoaded: (RewardedInterstitialAd ad) {
      // Called when an ad is successfully received.
      debugPrint('Ad was loaded.');
      // Keep a reference to the ad so you can show it later.
      _rewardedInterstitialAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      // Called when an ad request failed.
      debugPrint('Ad failed to load with error: $error');
    },
  ),
);

استبدِل _adUnitId برقم تعريف الوحدة الإعلانية الخاصة بك.

أحداث الإعلان البيني مقابل مكافأة

باستخدام FullScreenContentCallback، يمكنك الاستماع إلى أحداث مراحل نشاط الإعلان، مثل وقت ظهور الإعلان أو إغلاقه. اضبط RewardedInterstitialAd.fullScreenContentCallback قبل عرض الإعلان لتلقّي إشعارات بشأن هذه الأحداث. ينفّذ هذا المثال كل طريقة ويسجِّل رسالة في وحدة التحكّم:

ad.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (ad) {
    // Called when the ad showed the full screen content.
    debugPrint('Ad showed full screen content.');
  },
  onAdFailedToShowFullScreenContent: (ad, err) {
    // Called when the ad failed to show full screen content.
    debugPrint('Ad failed to show full screen content with error: $err');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdDismissedFullScreenContent: (ad) {
    // Called when the ad dismissed full screen content.
    debugPrint('Ad was dismissed.');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdImpression: (ad) {
    // Called when an impression occurs on the ad.
    debugPrint('Ad recorded an impression.');
  },
  onAdClicked: (ad) {
    // Called when a click is recorded for an ad.
    debugPrint('Ad was clicked.');
  },
);

عرض إعلان

يظهر RewardedInterstitialAd كطبقة فوق كل محتوى التطبيق ويتم وضعه بشكل ثابت، لذا لا يمكن إضافته إلى شجرة عناصر واجهة مستخدم Flutter. يمكنك اختيار وقت عرض الإعلان من خلال استدعاء show(). تأخذ الدالة RewardedInterstitialAd.show() دالة معاودة الاتصال OnUserEarnedRewardCallback، التي يتم استدعاؤها عندما يحصل المستخدم على مكافأة. احرص على تنفيذ هذه الدالة ومكافأة المستخدم على مشاهدة إعلان.

_rewardedInterstitialAd?.show(
  onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
    debugPrint('Reward amount: ${rewardItem.amount}');
  },
);

بعد استدعاء show()، لا يمكن إزالة Ad يتم عرضه بهذه الطريقة آليًا ويتطلّب بيانات أدخلها المستخدم. لا يمكن عرض RewardedInterstitialAd إلا مرة واحدة. ستؤدي عمليات الاستدعاء اللاحقة للدالة show إلى استدعاء onAdFailedToShowFullScreenContent.

يجب إيقاف الإعلان عندما لا تعود هناك حاجة إلى الوصول إليه. أفضل ممارسة لتحديد وقت استدعاء dispose() هي في دوال معاودة الاتصال FullScreenContentCallback.onAdDismissedFullScreenContent وFullScreenContentCallback.onAdFailedToShowFullScreenContent.

[اختياري] التحقّق من دوال معاودة الاتصال لعملية التحقّق من جهة الخادم (SSV)

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

يوضّح نموذج الرمز التالي كيفية ضبط خيارات عملية التحقّق من جهة الخادم بعد تحميل "الإعلان البيني بمكافأة":

RewardedInterstitialAd.load(
  adUnitId: "_adUnitId",
  request: AdManagerAdRequest(),
  rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback(
    onAdLoaded: (ad) {
      ServerSideVerificationOptions _options =
          ServerSideVerificationOptions(
            customData: 'SAMPLE_CUSTOM_DATA_STRING',
          );
      ad.setServerSideOptions(_options);
      _rewardedInterstitialAd = ad;
    },
    onAdFailedToLoad: (error) {},
  ),
);

استبدِل SAMPLE_CUSTOM_DATA_STRING ببياناتك المخصّصة.