تمت المكافأة

الإعلانات التي تضم مكافأة هي إعلانات يتوفّر للمستخدمين خيار التفاعل معها مقابل مكافآت داخل التطبيق. يوضّح هذا الدليل كيفية دمج الإعلانات التي تضم مكافآت من AdMob في تطبيق Flutter.

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

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

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

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

تحميل إعلان

يعمل المثال التالي على تحميل إعلان يضم مكافأة:

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

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

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

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

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

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

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

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedAd.load(
        adUnitId: adUnitId,
        request: const AdRequest(),
        adLoadCallback: RewardedAdLoadCallback(
          // 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.
            _rewardedAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedAd failed to load: $error');
          },
        ));
  }
}

إعلان صوري

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

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

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

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

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

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

الإعلانات التي تضمّ مكافآت