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

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

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

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

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

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

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

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

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