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

اختيار النظام الأساسي: Android iOS Unity Flutter

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

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

  • الإصدار 1.1.0 أو إصدار أحدث من إضافة Flutter
  • أكمِل الخطوات في البدء. يجب أن يكون تطبيق Flutter قد تم استيراد إضافة Google Mobile Ads 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 view, RewardItem rewardItem) {
    debugPrint('Reward amount: ${rewardItem.amount}');
  },
);

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

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

[اختياري] التحقّق من صحة عمليات رد الاتصال في عملية التحقّق من جهة الخادم

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

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

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 ببياناتك المخصّصة.