تبلیغات با پاداش

تبلیغات جایزه‌دار به شما این امکان را می‌دهد که به کاربران در ازای تعامل با تبلیغات ویدیویی، تبلیغات قابل پخش و نظرسنجی‌ها، با آیتم‌های درون برنامه‌ای پاداش دهید.

پیش‌نیازها

  • راهنمای شروع به کار را تکمیل کنید.
  • همیشه با تبلیغات آزمایشی تست کنید

    هنگام ساخت و آزمایش برنامه‌های خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می‌کنید. عدم انجام این کار می‌تواند منجر به مسدود شدن حساب شما شود.

    ساده‌ترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه واحد تبلیغات آزمایشی اختصاصی ما برای تبلیغات جایزه‌دار اندروید است:

    ca-app-pub-3940256099942544/5224354917

    این ابزار به طور ویژه پیکربندی شده است تا برای هر درخواست، تبلیغات آزمایشی را برگرداند و شما می‌توانید در برنامه‌های خود هنگام کدنویسی، آزمایش و اشکال‌زدایی از آن استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین می‌کنید.

    برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی GMA Next Gen SDK، به تبلیغات آزمایشی مراجعه کنید.

    بارگذاری یک تبلیغ

    برای بارگذاری یک تبلیغ، GMA Next Gen SDK موارد زیر را ارائه می‌دهد:

    با API بارگذاری تک تبلیغ بارگذاری کنید

    مثال زیر نحوه بارگذاری یک تبلیغ واحد را به شما نشان می‌دهد:

    کاتلین

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback
    import com.google.android.libraries.ads.mobile.sdk.MobileAds
    
    class RewardedActivity : Activity() {
      private var rewardedAd: RewardedAd? = null
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Load ads after you inititalize GMA Next Gen SDK.
        RewardedAd.load(
          AdRequest.Builder(AD_UNIT_ID).build(),
          object : AdLoadCallback<RewardedAd> {
            override fun onAdLoaded(ad: RewardedAd) {
              // Rewarded ad loaded.
              rewardedAd = ad
            }
    
            override fun onAdFailedToLoad(adError: LoadAdError) {
              // Rewarded ad failed to load.
              rewardedAd = null
            }
          },
        )
      }
    
      companion object {
        // Sample rewarded ad unit ID.
        const val AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917"
      }
    }
    

    جاوا

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd;
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback;
    import com.google.android.libraries.ads.mobile.sdk.MobileAds;
    
    class RewardedActivity extends Activity {
      // Sample rewarded ad unit ID.
      private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";
      private RewardedAd rewardedAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize GMA Next Gen SDK.
        RewardedAd.load(
            new AdRequest.Builder(AD_UNIT_ID).build(),
            new AdLoadCallback<RewardedAd>() {
              @Override
              public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                // Rewarded ad loaded.
                AdLoadCallback.super.onAdLoaded(rewardedAd);
                RewardedActivity.this.rewardedAd = rewardedAd;
              }
    
              @Override
              public void onAdFailedToLoad(@NonNull LoadAdError adError) {
                // Rewarded ad failed to load.
                AdLoadCallback.super.onAdFailedToLoad(adError);
                rewardedAd = null;
              }
            }
        );
      }
    }
    

    با استفاده از API پیش‌بارگذاری تبلیغات، بارگذاری کنید

    برای شروع پیش بارگذاری، موارد زیر را انجام دهید:

    1. پیکربندی پیش‌بارگذاری را با یک درخواست تبلیغ آغاز کنید.

    2. پیش‌بارگذار تبلیغات جایزه‌دار را با شناسه واحد تبلیغاتی و پیکربندی پیش‌بارگذاری خود شروع کنید:

    کاتلین

    private fun startPreloading(adUnitId: String) {
      val adRequest = AdRequest.Builder(adUnitId).build()
      val preloadConfig = PreloadConfiguration(adRequest)
      RewardedAdPreloader.start(adUnitId, preloadConfig)
    }
    
    

    جاوا

    private void startPreloading(String adUnitId) {
      AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
      PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
      RewardedAdPreloader.start(adUnitId, preloadConfig);
    }
    
    

    وقتی آماده نمایش تبلیغ شدید، تبلیغ را از پیش‌بارگذار (preloader) بررسی کنید:

    کاتلین

    // Polling returns the next available ad and loads another ad in the background.
    val ad = RewardedAdPreloader.pollAd(adUnitId)
    

    جاوا

    // Polling returns the next available ad and loads another ad in the background.
    final RewardedAd ad = RewardedAdPreloader.pollAd(adUnitId);
    

    تنظیم RewardedAdEventCallback

    RewardedAdEventCallback رویدادهای مربوط به نمایش RewardedAd شما را مدیریت می‌کند. قبل از نمایش تبلیغ پاداش‌دار، حتماً تابع فراخوانی زیر را تنظیم کنید:

    کاتلین

    // Listen for ad events.
    rewardedAd?.adEventCallback =
      object : RewardedAdEventCallback {
        override fun onAdShowedFullScreenContent() {
          // Rewarded ad did show.
        }
    
        override fun onAdDismissedFullScreenContent() {
          // Rewarded ad did dismiss.
          rewardedAd = null
        }
    
        override fun onAdFailedToShowFullScreenContent(
          fullScreenContentError: FullScreenContentError
        ) {
          // Rewarded ad failed to show.
          rewardedAd = null
        }
    
        override fun onAdImpression() {
          // Rewarded ad did record an impression.
        }
    
        override fun onAdClicked() {
          // Rewarded ad did record a click.
        }
      }
    

    جاوا

    // Listen for ad events.
    rewardedAd.setAdEventCallback(
        new RewardedAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Rewarded ad did show.
            RewardedAdEventCallback.super.onAdShowedFullScreenContent();
          }
    
          @Override
          public void onAdDismissedFullScreenContent() {
            // Rewarded ad did dismiss.
            RewardedAdEventCallback.super.onAdDismissedFullScreenContent();
            rewardedAd = null;
          }
    
          @Override
          public void onAdFailedToShowFullScreenContent(
              @NonNull FullScreenContentError fullScreenContentError) {
            // Rewarded ad failed to show.
            RewardedAdEventCallback.super.onAdFailedToShowFullScreenContent(
                fullScreenContentError);
            rewardedAd = null;
          }
    
          @Override
          public void onAdImpression() {
            // Rewarded ad did record an impression.
            RewardedAdEventCallback.super.onAdImpression();
          }
    
          @Override
          public void onAdClicked() {
            // Rewarded ad did record a click.
            RewardedAdEventCallback.super.onAdClicked();
          }
        }
    );
    

    نمایش تبلیغ

    برای نمایش یک تبلیغ جایزه‌دار، از متد show() استفاده کنید. از یک شیء OnUserEarnedRewardListener برای مدیریت رویدادهای جایزه استفاده کنید.

    کاتلین

    // Show the ad.
    rewardedAd?.show(
      this@RewardedActivity,
      object : OnUserEarnedRewardListener {
        override fun onUserEarnedReward(rewardItem: RewardItem) {
          // User earned the reward.
          val rewardAmount = rewardItem.amount
          val rewardType = rewardItem.type
        }
      },
    )
    

    جاوا

    // Show the ad.
    rewardedAd.show(
        RewardedActivity.this,
        new OnUserEarnedRewardListener() {
          @Override
          public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
            // User earned the reward.
            int rewardAmount = rewardItem.getAmount();
            String rewardType = rewardItem.getType();
        }
    });
    

    سوالات متداول

    آیا برای فراخوانی مقداردهی اولیه، مهلت زمانی وجود دارد؟
    پس از 10 ثانیه، GMA Next Gen SDK حتی اگر یک شبکه میانجی هنوز مقداردهی اولیه را تکمیل نکرده باشد، OnInitializationCompleteListener را فراخوانی می‌کند.
    اگر برخی از شبکه‌های میانجیگری هنگام دریافت پاسخ اولیه آماده نباشند، چه می‌شود؟

    توصیه می‌کنیم یک تبلیغ را در داخل فراخوانی OnInitializationCompleteListener بارگذاری کنید. حتی اگر یک شبکه میانجیگری آماده نباشد، GMA Next Gen SDK همچنان از آن شبکه درخواست تبلیغ می‌کند. بنابراین اگر یک شبکه میانجیگری پس از اتمام زمان، مقداردهی اولیه را انجام دهد، همچنان می‌تواند درخواست‌های تبلیغ آینده را در آن جلسه ارائه دهد.

    شما می‌توانید با فراخوانی MobileAds.getInitializationStatus() به نظرسنجی در مورد وضعیت اولیه‌سازی همه آداپتورها در طول جلسه برنامه خود ادامه دهید.

    چگونه بفهمم که چرا یک شبکه میانجیگری خاص آماده نیست؟

    AdapterStatus.getDescription() توضیح می‌دهد که چرا یک آداپتور آماده‌ی سرویس‌دهی به درخواست‌های تبلیغاتی نیست.

    آیا تابع فراخوانی onUserEarnedReward() همیشه قبل از تابع فراخوانی onAdDismissedFullScreenContent() فراخوانی می‌شود؟

    برای تبلیغات گوگل، تمام فراخوانی‌های onUserEarnedReward() قبل از onAdDismissedFullScreenContent() رخ می‌دهند. برای تبلیغاتی که از طریق میانجیگری ارائه می‌شوند، پیاده‌سازی SDK شبکه تبلیغاتی شخص ثالث، ترتیب فراخوانی را تعیین می‌کند. برای SDKهای شبکه تبلیغاتی که یک فراخوانی بسته واحد با اطلاعات پاداش ارائه می‌دهند، آداپتور میانجیگری، onUserEarnedReward() قبل از onAdDismissedFullScreenContent() فراخوانی می‌کند.

    مثال

    برنامه‌ی نمونه‌ای که نحوه‌ی استفاده از GMA Next Gen SDK را نشان می‌دهد، دانلود و اجرا کنید.