اجرای آیکون های تبلیغاتی

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

این راهنما به شما نشان می‌دهد که چگونه تبلیغات آیکونی را درخواست و نمایش دهید.

پیش‌نیازها

قبل از شروع، باید GMA Next-Gen SDK 0.8.0-alpha01 یا بالاتر را داشته باشید.

همیشه با تبلیغات آزمایشی تست کنید

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

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

ca-app-pub-3940256099942544/1476272466
برای جزئیات بیشتر در مورد تبلیغات آزمایشی GMA Next-Gen SDK ، به فعال کردن تبلیغات آزمایشی مراجعه کنید.

بارگذاری یک تبلیغ آیکونی

یک تبلیغ آیکونی را با درخواست تبلیغ آیکونی خود بارگذاری کنید و رویدادهای بارگذاری تبلیغ را مدیریت کنید:

کاتلین

private fun loadIconAd() {
  val request =
    IconAdRequest.Builder(AD_UNIT_ID)
      // The "AdChoices" badge is rendered at the top right corner of the icon ad
      // if left unspecified.
      .setAdChoicesPlacement(AdChoicesPlacement.BOTTOM_RIGHT)
      // It is recommended to specify the placement of your icon ad
      // to help Google optimize your icon ad performance.
      .setIconAdPlacement(IconAdPlacement.BROWSER)
      .build()

  IconAd.load(
    request,
    object : AdLoadCallback<IconAd> {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.w(Constant.TAG, "Icon ad failed to load: $adError")
        showToast("Icon ad failed to load.")
      }

      override fun onAdLoaded(ad: IconAd) {
        Log.d(Constant.TAG, "Icon ad loaded")
        // Always call destroy() on ads on removal.
        iconAd?.destroy()
        iconAd = ad
        setAdEventCallback(ad)
        displayIconAd(ad)
      }
    },
  )
}

جاوا

private void loadIconAd() {
  IconAdRequest request =
      new IconAdRequest.Builder(AD_UNIT_ID)
          // The "AdChoices" badge is rendered at the top right corner of the icon ad
          // if left unspecified.
          .setAdChoicesPlacement(AdChoicesPlacement.BOTTOM_RIGHT)
          // It is recommended to specify the placement of your icon ad
          // to help Google optimize your icon ad performance.
          .setIconAdPlacement(IconAdPlacement.BROWSER)
          .build();

  IconAd.load(
      request,
      new AdLoadCallback<IconAd>() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          Log.w(Constant.TAG, "Icon ad failed to load :" + adError);
          showToast("Icon ad failed to load with error code: " + adError.getCode());
        }

        @Override
        public void onAdLoaded(@NonNull IconAd ad) {
          Log.d(Constant.TAG, "Icon ad loaded.");

          // Always call destroy() on ads on removal.
          if (iconAd != null) {
              iconAd.destroy();
          }
          iconAd = ad;
          setAdEventCallback(ad);
          displayIconAd(ad);
        }
      });
}

ایجاد یک نمای تبلیغ آیکونی

تبلیغات آیکونی باید از IconAdView به عنوان عنصر ریشه برای دارایی‌های خود استفاده کنند. تمام عناصر بصری تبلیغ خود را در نمای تبلیغات آیکونی قرار دهید.

مثال زیر یک طرح‌بندی برای ایجاد یک نما برای یک تبلیغ آیکونی را نشان می‌دهد:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.libraries.ads.mobile.sdk.iconad.IconAdView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

  <LinearLayout
      android:id="@+id/icon_ad_container"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:background="#00FFC107"
      android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
      <TextView
          android:id="@+id/ad_badge"
          android:width="15dp"
          android:height="15dp"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:background="#FFC107"
          android:text="Ad"
          android:textColor="#FFFFFF"
          android:textSize="12sp" />
      <TextView
          android:id="@+id/ad_headline"
          android:textStyle="normal"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_gravity="center"
          android:autoText="true"
          android:inputType="text|textMultiLine"
          android:textColor="#808080"
          android:textSize="12sp" />
    </LinearLayout>

    <com.google.android.material.imageview.ShapeableImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/ad_icon"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:background="@android:color/holo_green_light"
        android:contentDescription="@string/content_description_icon_ad"
        android:theme="@style/Theme.AppCompat.Light"
        app:shapeAppearanceOverlay="@style/roundedCorners"
        app:strokeColor="@null" />

    <RatingBar
        android:id="@+id/ad_stars"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:isIndicator="true"
        android:numStars="5"
        android:stepSize="0.5" />
    <Button
        android:id="@+id/ad_call_to_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="12sp" />
  </LinearLayout>

</com.google.android.libraries.ads.mobile.sdk.iconad.IconAdView>

نمایش آیکون تبلیغ روی صفحه

برای نمایش آیکون تبلیغ روی صفحه، مراحل زیر را انجام دهید:

  1. نمای تبلیغ آیکون را بزرگ کنید و آن را به سلسله مراتب نمای خود اضافه کنید.

  2. هر نمای فرزند را با نماد تبلیغاتی مربوطه پر کنید.

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

کاتلین

val iconAdViewBinding = IconAdBinding.inflate(layoutInflater)
// Add the ad view to the active view hierarchy.
binding.iconAdContainer.addView(iconAdViewBinding.root)
val iconAdView = iconAdViewBinding.root

// Populate the view elements with their respective icon ad asset.
iconAdView.callToActionView = iconAdViewBinding.adCallToAction
iconAdView.headlineView = iconAdViewBinding.adHeadline
iconAdView.iconView = iconAdViewBinding.adIcon
iconAdView.starRatingView = iconAdViewBinding.adStars

جاوا

IconAdBinding iconAdViewBinding = IconAdBinding.inflate(getLayoutInflater());
// Add the ad view to the active view hierarchy.
binding.iconAdContainer.addView(iconAdViewBinding.getRoot());
IconAdView iconAdView = iconAdViewBinding.getRoot();

// Populate the view elements with their respective icon ad asset.
iconAdView.setCallToActionView(iconAdViewBinding.adCallToAction);
iconAdView.setHeadlineView(iconAdViewBinding.adHeadline);
iconAdView.setIconView(iconAdViewBinding.adIcon);
iconAdView.setStarRatingView(iconAdViewBinding.adStars);

آیکون تبلیغ را قابل کلیک کنید

GMA Next-Gen SDK برای هر نمای دارایی که هنگام فراخوانی registerIconAd() نگاشت می‌شود، شنونده‌های کلیک را ثبت می‌کند. قبل از ثبت آیکون تبلیغ، ویژگی‌های نمای آیکون تبلیغ را به نمای مربوطه در سلسله مراتب نمای خود نگاشت کنید:

کاتلین

// Map each asset view property to the corresponding view in your view hierarchy.
iconAdViewBinding.adCallToAction.text = iconAd.callToAction
iconAdViewBinding.adHeadline.text = iconAd.headline
iconAdViewBinding.adIcon.setImageDrawable(iconAd.icon.drawable)
iconAd.starRating?.toFloat().also { value ->
  if (value != null) {
    iconAdViewBinding.adStars.rating = value
  }
}

// Register the icon ad with the view presenting it.
iconAdView.registerIconAd(iconAd)

جاوا

// Map each asset view property to the corresponding view in your view hierarchy.
iconAdViewBinding.adCallToAction.setText(iconAd.getCallToAction());
iconAdViewBinding.adHeadline.setText(iconAd.getHeadline());
iconAdViewBinding.adIcon.setImageDrawable(iconAd.getIcon().getDrawable());

if (iconAd.getStarRating() != null) {
  iconAdViewBinding.adStars.setRating(iconAd.getStarRating().floatValue());
}

// Register the icon ad with the view presenting it.
iconAdView.registerIconAd(iconAd);

اختیاری: فراخوانی رویداد تبلیغ آیکون را تنظیم کنید

برای مدیریت رویدادهای چرخه عمر تبلیغات آیکون، رویداد callback را تنظیم کنید:

کاتلین

iconAd.adEventCallback =
  object : IconAdEventCallback {
    override fun onAdShowedFullScreenContent() {
      // Icon ad showed full screen content.
    }

    override fun onAdDismissedFullScreenContent() {
      // Icon ad dismissed full screen content.
    }

    override fun onAdFailedToShowFullScreenContent(
      fullScreenContentError: FullScreenContentError
    ) {
      // Icon ad failed to show full screen content.
    }

    override fun onAdImpression() {
      // Icon ad recorded an impression.
    }

    override fun onAdClicked() {
      // Icon ad recorded a click.
    }

    override fun onAdPaid(value: AdValue) {
      // Icon ad estimated to have earned money.
    }
  }

جاوا

iconAd.setAdEventCallback(
    new IconAdEventCallback() {
      @Override
      public void onAdShowedFullScreenContent() {
        // Icon ad showed full screen content.
      }

      @Override
      public void onAdDismissedFullScreenContent() {
        // Icon ad dismissed full screen content.
      }

      @Override
      public void onAdFailedToShowFullScreenContent(
          @NonNull FullScreenContentError fullScreenContentError) {
        // Icon ad failed to show full screen content.
      }

      @Override
      public void onAdImpression() {
        // Icon ad recorded an impression.
      }

      @Override
      public void onAdClicked() {
        // Icon ad recorded a click.
      }

      @Override
      public void onAdPaid(@NonNull AdValue value) {
        // Icon ad estimated to have earned money.
      }
    });

بهینه سازی عملکرد

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

استفاده از correlator برای بارگذاری چندین تبلیغ

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

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

کاتلین

val correlator = Correlator.generateCorrelator()
val request =
      IconAdRequest.Builder("ca-app-pub-3940256099942544/1476272466")
        .setCorrelator(correlator)
        .build()

جاوا

Correlator correlator = Correlator.generateCorrelator();
IconAdRequest request =
    new IconAdRequest.Builder("ca-app-pub-3940256099942544/1476272466")
        .setCorrelator(correlator)
        .build();

تنظیم محل قرارگیری تبلیغ آیکونی

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

از مقداری از IconAdPlacement enum استفاده کنید که بیشترین شباهت را به مورد استفاده شما داشته باشد:

کاتلین

val request =
  IconAdRequest.Builder("ca-app-pub-3940256099942544/1476272466")
    .setIconAdPlacement(IconAdPlacement.BROWSER)
    .build()

جاوا

IconAdRequest request =
    new IconAdRequest.Builder("ca-app-pub-3940256099942544/1476272466")
        .setIconAdPlacement(IconAdPlacement.BROWSER)
        .build();