الإعلان البيني بمكافأة (إصدار تجريبي)

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

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

  • المكوّن الإضافي Flutter 1.1.0 أو إصدار أحدث
  • أكمِل البدء. يجب أن يكون لديك تطبيق Flutter تم فيه استيراد المكوّن الإضافي Flutter لإعلانات Google للأجهزة الجوّالة.

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

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

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

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

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

تحميل إعلان

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

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardeInterstitialdAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5354046379'
    : 'ca-app-pub-3940256099942544/6978759866';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedInterstitialAd.load(
        adUnitId: adUnitId,
        adRequest: const AdRequest(),
        adLoadCallback: RewardedInterstitialAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedInterstitialAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedInterstitialAd failed to load: $error');
          },
        ));
  }
}

أحداث الإعلانات البينية التي تضمّ مكافأة

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

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardedInterstitialAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5354046379'
    : 'ca-app-pub-3940256099942544/6978759866';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedInterstitialAd.load(
        adUnitId: adUnitId,
        adRequest: const AdRequest(),
        adLoadCallback: RewardedInterstitialAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            ad.fullScreenContentCallback = FullScreenContentCallback(
              // Called when the ad showed the full screen content.
              onAdShowedFullScreenContent: (ad) {},
              // Called when an impression occurs on the ad.
              onAdImpression: (ad) {},
              // Called when the ad failed to show full screen content.
              onAdFailedToShowFullScreenContent: (ad, err) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when the ad dismissed full screen content.
              onAdDismissedFullScreenContent: (ad) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when a click is recorded for an ad.
              onAdClicked: (ad) {});

            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedInterstitialAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugprint('RewardedInterstitialAd failed to load: $error');
          },
        ));
  }
}

إعلان صوري

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

_rewardedInterstitialAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
  // Reward the user for watching an ad.
});

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

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

هذا كل شيء! أصبح تطبيقك جاهزًا الآن لعرض الإعلانات البينية التي تضم مكافآت.

مثال كامل على GitHub

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