تبلیغات باز برنامه را تنظیم کنید

SDK.

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

برای اطلاعات بیشتر، به راهنمای تبلیغات باز برنامه مراجعه کنید.

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

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

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

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

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

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

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

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

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

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

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

کاتلین

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

جاوا

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

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

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

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

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

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

کاتلین

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

  // Interact with the ad object as needed.
  Log.d(TAG, "App open ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "App open ad recorded an impression.")
      }
    }
  ad.show(activity)
}

جاوا

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

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

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

  // Show the ad.
  ad.show(activity);
}

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

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

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

کاتلین

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

  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // App open ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // App open ad did dismiss.
        appOpenAd = null
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // App open ad failed to show.
        Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}")
      }

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

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

جاوا

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

  appOpenAd.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // App open ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // App open ad did dismiss.
          appOpenAd = null;
        }

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

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

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

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

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

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

کاتلین

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

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

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

جاوا

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

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, String.format("App open preload ad %s is not available", preloadId));
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, String.format("App open preload ad %s is available", preloadId));
      }
    };
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

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

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

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

کاتلین

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

جاوا

private boolean isAdAvailable(String adUnitId) {
  return AppOpenAdPreloader.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)
AppOpenAdPreloader.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);
AppOpenAdPreloader.start(adUnitId, preloadConfig);

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

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

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

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

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

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

کاتلین

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

جاوا

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

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

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

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

کاتلین

val responseInfo = AppOpenAdPreloader.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 = AppOpenAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

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

صفحه‌های شروع سرد و بارگیری

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

به دلیل تأخیر در درخواست تبلیغات، کاربران ممکن است قبل از نمایش تبلیغات باز برنامه، با برنامه شما تعامل داشته باشند. برای جلوگیری از تجربه کاربری ضعیف، تبلیغات باز برنامه را در شروع سرد، دقیقاً از صفحه بارگیری در حین بارگذاری محتوای برنامه نمایش دهید. اگر بارگیری محتوا کامل شد و کاربر قبل از بارگیری تبلیغ به محتوای اصلی رسید، تبلیغ را نشان ندهید.

فایل‌های برنامه را در یک رشته پس‌زمینه بارگذاری کنید تا بارگیری در حین نمایش تبلیغ ادامه یابد.

بهترین شیوه‌ها

برای تبلیغات باز اپلیکیشن، این بهترین شیوه‌ها را دنبال کنید:

  • اولین تبلیغ باز شدن اپلیکیشن خود را تنها پس از اینکه کاربر چندین بار اپلیکیشن شما را باز کرد، نمایش دهید.
  • اگر بارگذاری صفحه نمایش شما در حین نمایش تبلیغ به پایان رسید، صفحه بارگذاری را با استفاده از متد فراخوانی ad denied رد کنید.