تبلیغات جایزه‌دار راه‌اندازی کنید

SDK.

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

این راهنما نحوه ادغام تبلیغات جایزه‌دار را در یک برنامه اندروید توضیح می‌دهد.

قبل از اینکه شروع کنی

قبل از ادامه، موارد زیر را انجام دهید:

  • GMA Next-Gen SDK را راه‌اندازی کنید .
  • از شناسه واحد تبلیغات پاداش‌دار آزمایشی ca-app-pub-3940256099942544/5224354917 استفاده کنید.
    • هنگام ساخت و آزمایش برنامه خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می‌کنید. اگر از شناسه واحد تبلیغات آزمایشی استفاده نکنید، گوگل می‌تواند حساب شما را مسدود کند.
    • قبل از انتشار برنامه، این شناسه را با شناسه واحد تبلیغاتی خود جایگزین کنید.
    • برای جزئیات بیشتر در مورد تبلیغات آزمایشی GMA Next-Gen SDK ، به فعال کردن تبلیغات آزمایشی مراجعه کنید.

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

پیش‌بارگذاری تبلیغات در GMA Next-Gen SDK بارگذاری و ذخیره‌سازی تبلیغات را خودکار می‌کند.

پیش بارگذاری تبلیغات مزایای زیر را ارائه می‌دهد:

  • مدیریت منابع : منابع را تا زمان نمایش تبلیغات حفظ می‌کند.
  • بارگذاری مجدد خودکار : وقتی تبلیغی از حافظه پنهان بازیابی می‌شود، تبلیغ جدیدی بارگذاری می‌شود.
  • تلاش‌های مجدد مدیریت‌شده : وقتی تبلیغی بارگذاری نمی‌شود، تبلیغ جدیدی بارگذاری می‌شود.
  • مدیریت انقضا : تبلیغات را قبل از انقضا به‌روزرسانی می‌کند.
  • بهینه‌سازی حافظه پنهان : ترتیب حافظه پنهان را برای نمایش تبلیغ با بالاترین اولویت بهینه می‌کند.

شروع پیش بارگذاری تبلیغات

برای شروع پیش‌بارگذاری تبلیغات، متد startPreload() را یک بار در شروع برنامه فراخوانی کنید. پس از فراخوانی متد startPreload() ، GMA Next-Gen SDK به طور خودکار تبلیغات را پیش‌بارگذاری می‌کند و درخواست‌های ناموفق برای پیکربندی‌های از پیش بارگذاری شده را دوباره امتحان می‌کند.

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

کاتلین

val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
RewardedAdPreloader.start(adUnitId, preloadConfig)

جاوا

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
RewardedAdPreloader.start(adUnitId, preloadConfig);

AD_UNIT_ID با شناسه واحد تبلیغاتی خود جایگزین کنید.

مثال قبلی نحوه استفاده از شناسه واحد تبلیغاتی به عنوان شناسه پیش‌بارگذاری را نشان می‌دهد. شناسه پیش‌بارگذاری یک شناسه رشته‌ای است که شما برای شناسایی پیکربندی پیش‌بارگذاری تبلیغات ایجاد می‌کنید. اگر برنامه شما به چندین پیکربندی هدف‌گیری برای یک شناسه واحد تبلیغاتی نیاز دارد، یک شناسه رشته‌ای سفارشی ارسال کنید.

دریافت و نمایش تبلیغ از پیش بارگذاری شده

وقتی می‌خواهید یک تبلیغ نمایش دهید، متد pollAd() را فراخوانی کنید. GMA Next-Gen SDK یک تبلیغ موجود را بازیابی می‌کند و به طور خودکار تبلیغ بعدی را در پس‌زمینه بارگذاری اولیه می‌کند. اگر هیچ تبلیغی موجود نباشد، GMA Next-Gen SDK هیچ تبلیغی را برنمی‌گرداند.

وقتی یک شیء تبلیغ (ad object) در دسترس دارید، متد show را برای نمایش تبلیغ فراخوانی کنید. از یک شنونده پاداش (reward listener) برای مدیریت رویدادهای پاداش استفاده کنید. مثال زیر نحوه بازیابی و نمایش یک تبلیغ از پیش بارگذاری شده را نشان می‌دهد:

کاتلین

private fun pollAndShowAd(activity: Activity, adUnitId: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = RewardedAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "Rewarded ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "Rewarded ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : RewardedAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "Rewarded ad recorded an impression.")
      }
    }
  ad.show(activity) { rewardItem -> Log.d(TAG, "User earned reward: ${rewardItem.amount}") }
}

جاوا

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final RewardedAd ad = RewardedAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad == null) {
    Log.e(TAG, "Rewarded ad is not available.");
    return;
  }

  Log.d(TAG, "Rewarded ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new RewardedAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "Rewarded ad recorded an impression.");
        }
      });

  // Show the ad.
  ad.show(
      activity,
      rewardItem -> {
        Log.d(TAG, "User earned reward: " + rewardItem.getAmount());
      });
}

تا زمانی که آماده نمایش تبلیغ نیستید، از فراخوانی متد pollAd() خودداری کنید. برای خواندن اطلاعات پاسخ تبلیغ بدون نمایش آن، به بخش «خواندن اطلاعات پاسخ» مراجعه کنید.

به رویدادهای تبلیغاتی گوش دهید

قبل از نمایش تبلیغ، به رویدادهای تبلیغ گوش دهید. مثال زیر نحوه ثبت فراخوانی‌ها برای رویدادهای تبلیغ را نشان می‌دهد:

کاتلین

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = rewardedAd
  if (ad == null) {
    Log.e(TAG, "Rewarded ad is not ready yet.")
    return
  }

  ad.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.
        Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}")
      }

      override fun onAdImpression() {
        // Rewarded ad did record an impression.
      }

      override fun onAdClicked() {
        // Rewarded ad did record a click.
      }
    }
}

جاوا

private void listenToAdEvents() {
  // Listen for ad events.
  if (rewardedAd == null) {
    Log.e(TAG, "Rewarded ad is not ready yet.");
    return;
  }

  rewardedAd.setAdEventCallback(
      new RewardedAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // Rewarded ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // Rewarded ad did dismiss.
          rewardedAd = null;
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            FullScreenContentError fullScreenContentError) {
          // Rewarded ad failed to show.
          Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage());
        }

        @Override
        public void onAdImpression() {
          // Rewarded ad did record an impression.
        }

        @Override
        public void onAdClicked() {
          // Rewarded ad did record a click.
        }
      });
}

اختیاری: اعتبارسنجی کال‌بک‌های تأیید سمت سرور (SSV)

اگر برنامه شما در فراخوانی‌های تأیید سمت سرور به داده‌های اضافی نیاز دارد، از ویژگی داده‌های سفارشی تبلیغات پاداشی استفاده کنید. هر مقدار رشته‌ای که روی یک شیء تبلیغ پاداشی تنظیم شود، به پارامتر پرس‌وجوی custom_data از فراخوانی SSV ارسال می‌شود. اگر هیچ مقدار داده سفارشی تنظیم نشود، مقدار پارامتر پرس‌وجوی custom_data در فراخوانی SSV وجود نخواهد داشت.

نمونه کد زیر نحوه تنظیم داده‌های سفارشی روی یک شیء تبلیغ پاداش‌دار قبل از نمایش تبلیغ را نشان می‌دهد:

کاتلین

RewardedAd.load(
  context,
  AD_UNIT_ID,
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      rewardedAd = ad
      val options =
        ServerSideVerificationOptions.Builder().setCustomData("SAMPLE_CUSTOM_DATA_STRING").build()
      rewardedAd?.setServerSideVerificationOptions(options)
    }
  },
)

جاوا

RewardedAd.load(
    context,
    AD_UNIT_ID,
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedAd ad) {
        rewardedAd = ad;
        ServerSideVerificationOptions options =
            new ServerSideVerificationOptions.Builder()
                .setCustomData("SAMPLE_CUSTOM_DATA_STRING")
                .build();
        rewardedAd.setServerSideVerificationOptions(options);
      }
    });

SAMPLE_CUSTOM_DATA_STRING را با داده‌های سفارشی خود جایگزین کنید.

اختیاری: به رویدادهای پیش‌بارگذاری گوش دهید

وقتی شروع به پیش‌بارگذاری تبلیغات می‌کنید، برای رویدادهای پیش‌بارگذاری ثبت‌نام کنید تا در صورت موفقیت‌آمیز بودن پیش‌بارگذاری تبلیغات، عدم موفقیت در پیش‌بارگذاری یا اتمام حافظه پنهان تبلیغات، مطلع شوید.

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

کاتلین

val preloadCallback =
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(TAG, "Rewarded preload ad $preloadId failed to load with error: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "Rewarded preload ad $preloadId is not available")
    }

    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
      Log.i(TAG, "Rewarded preload ad $preloadId is available")
    }
  }
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

جاوا

PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "Rewarded preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
      }

      @Override
      public void onAdsExhausted(String preloadId) {
        Log.i(TAG, "Rewarded preload ad " + preloadId + " is not available");
      }

      @Override
      public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
        Log.i(TAG, "Rewarded preload ad " + preloadId + " is available");
      }
    };

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

وقتی یک تبلیغ بارگذاری نمی‌شود، GMA Next-Gen SDK به‌طور خودکار تبلیغات را از قبل بارگذاری می‌کند و درخواست‌های ناموفق برای پیکربندی‌های از پیش بارگذاری‌شده را دوباره امتحان می‌کند.

اختیاری: بررسی در دسترس بودن تبلیغات

اگر می‌خواهید بدانید که آیا یک تبلیغ در دسترس است یا خیر، در دسترس بودن آن را بررسی کنید. مثال زیر نحوه بررسی در دسترس بودن یک تبلیغ از پیش بارگذاری شده را نشان می‌دهد:

کاتلین

private fun isAdAvailable(adUnitId: String): Boolean {
  return RewardedAdPreloader.isAdAvailable(adUnitId)
}

جاوا

private boolean isAdAvailable(String adUnitId) {
  return RewardedAdPreloader.isAdAvailable(adUnitId);
}

اختیاری: اندازه بافر را تنظیم کنید

اندازه بافر، تعداد تبلیغات از پیش بارگذاری شده در حافظه را کنترل می‌کند. به طور پیش‌فرض، گوگل اندازه بافر را بهینه می‌کند تا مصرف حافظه و تأخیر نمایش تبلیغات را متعادل کند. می‌توانید یک اندازه بافر سفارشی تنظیم کنید تا تعداد تبلیغات نگهداری شده در حافظه را افزایش دهید.

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

کاتلین

val adRequest = AdRequest.Builder(adUnitId).build()
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
RewardedAdPreloader.start(adUnitId, preloadConfig)

جاوا

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2);
RewardedAdPreloader.start(adUnitId, preloadConfig);

محدودیت‌های پیش‌بارگذاری حافظه پنهان

GMA Next-Gen SDK محدودیتی را در کل برنامه بر تعداد کل تبلیغات از پیش بارگذاری شده در تمام واحدهای تبلیغاتی و شناسه‌های از پیش بارگذاری شده اعمال می‌کند:

  • محدودیت پیش‌فرض: گوگل حداکثر شش تبلیغ از پیش بارگذاری‌شده را در حافظه نگه می‌دارد. این محدودیت در تمام قالب‌ها و شناسه‌های از پیش بارگذاری‌شده مشترک است.
  • توصیه می‌کنیم برای هر شناسه‌ی پیش‌بارگذاری، اندازه‌ی بافر را دو نگه دارید.

اختیاری: توقف پیش‌بارگذاری تبلیغات

اگر نیازی به نمایش مجدد تبلیغات برای یک شناسه پیش‌بارگذاری خاص در جلسه ندارید، می‌توانید پیش‌بارگذاری تبلیغات را متوقف کنید. برای متوقف کردن بارگذاری تبلیغات برای یک شناسه پیش‌بارگذاری خاص، متد destroy() را با یک شناسه پیش‌بارگذاری فراخوانی کنید. فراخوانی متد destroy() تمام تبلیغات پیش‌بارگذاری شده مرتبط با شناسه پیش‌بارگذاری را از حافظه پنهان حذف می‌کند.

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

کاتلین

private fun stopPreloading(adUnitId: String) {
  // Stops the preloading and destroy preloaded ads.
  RewardedAdPreloader.destroy(adUnitId)
}

جاوا

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  RewardedAdPreloader.destroy(adUnitId);
}

اختیاری: اطلاعات پاسخ را بخوانید

اطلاعات پاسخ تبلیغ از پیش بارگذاری شده بعدی را بدون حذف تبلیغ از حافظه پنهان بخوانید.

مثال زیر نحوه خواندن اطلاعات پاسخ تبلیغ از پیش بارگذاری شده بعدی را نشان می‌دهد:

کاتلین

val responseInfo = RewardedAdPreloader.peekAdResponseInfo(preloadId)
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.")
  return
}

Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")

جاوا

ResponseInfo responseInfo = RewardedAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());