ติดตั้งโฆษณาแบบไอคอน

โฆษณาไอคอนคือตำแหน่งไอคอนแอปขนาดเล็กที่ช่วยเสริมประสบการณ์ของผู้ใช้ระบบปฏิบัติการ และมีความยืดหยุ่นในการทำงานร่วมกับกิจกรรมระดับระบบปฏิบัติการส่วนใหญ่ เช่น หน้าจอล็อกและหน้าจอแชร์ คุณแสดงโฆษณาไอคอนทีละรายการหรือ หลายกลุ่มก็ได้ โฆษณาแต่ละรายการจะมีชุดข้อความและองค์ประกอบสตริงที่แอปของคุณมีหน้าที่แสดง รูปภาพต่อไปนี้แสดงโฆษณาไอคอนบนจอแสดงผล ในโฟลเดอร์แอป

คู่มือนี้แสดงวิธีขอและแสดงโฆษณาไอคอน

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น คุณต้องมี GMA Next-Gen SDK 0.8.0-alpha01 ขึ้นไป

ทดสอบด้วยโฆษณาทดสอบเสมอ

เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทน โฆษณาจริงที่ใช้งานจริง การไม่ใช้โฆษณาทดสอบอาจส่งผลให้มีการระงับบัญชี ของคุณ

ใช้หน่วยโฆษณาของคุณและเปิดใช้อุปกรณ์ทดสอบเพื่อรับโฆษณาทดสอบ หรือใช้รหัสหน่วยโฆษณาทดสอบเฉพาะต่อไปนี้สำหรับโฆษณาไอคอน Android

ca-app-pub-3940256099942544/1476272466
ดูรายละเอียดเกี่ยวกับโฆษณาทดสอบ GMA Next-Gen SDK ได้ที่ เปิดใช้โฆษณาทดสอบ

โหลดโฆษณาไอคอน

โหลดโฆษณาไอคอนด้วยคำขอโฆษณาไอคอน และจัดการเหตุการณ์การโหลดโฆษณา ดังนี้

Kotlin

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)
      }
    },
  )
}

Java

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. ป้อนข้อมูลในมุมมองย่อยแต่ละรายการด้วยชิ้นงานโฆษณาไอคอนที่เกี่ยวข้อง

ตัวอย่างต่อไปนี้ครอบคลุมขั้นตอนก่อนหน้าในการแสดงโฆษณาไอคอนบนหน้าจอ

Kotlin

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

Java

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() แมปพร็อพเพอร์ตี้การดูโฆษณาไอคอนกับ มุมมองที่เกี่ยวข้องในลําดับชั้นของมุมมองก่อนที่จะลงทะเบียนโฆษณาไอคอน

Kotlin

// 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)

Java

// 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 ของเหตุการณ์โฆษณาไอคอน

หากต้องการจัดการเหตุการณ์วงจรโฆษณาไอคอน ให้ตั้งค่าการเรียกกลับของเหตุการณ์ดังนี้

Kotlin

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.
    }
  }

Java

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.
      }
    });

เพิ่มประสิทธิภาพ

ส่วนต่อไปนี้จะครอบคลุมขั้นตอนการติดตั้งใช้งานที่ไม่บังคับเพื่อเพิ่มประสิทธิภาพ โฆษณาไอคอน

ใช้ตัวเชื่อมโยงเพื่อโหลดโฆษณาหลายรายการ

เมื่อโหลดโฆษณาไอคอนหลายรายการเพื่อแสดงพร้อมกัน ให้ส่งคำขอตามลำดับ โดยใช้ค่าสหสัมพันธ์เดียวกันเพื่อให้แน่ใจว่าโฆษณาที่โหลดมานั้นไม่ซ้ำกัน อายุของตัวเชื่อมโยงคือ 10 วินาที เซิร์ฟเวอร์จะไม่พิจารณาคำขอที่ส่ง ห่างกันมากกว่า 10 วินาทีว่ามีความสัมพันธ์กัน

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าตัวเชื่อมโยงในคำขอโฆษณา

Kotlin

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

Java

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

ตั้งค่าตำแหน่งโฆษณาไอคอน

เพื่อช่วยให้ Google เข้าใจตําแหน่งโฆษณาไอคอนของคุณเพื่อเพิ่มประสิทธิภาพโฆษณาไอคอน ขอแนะนําให้ระบุตําแหน่งที่คุณต้องการแสดงโฆษณาไอคอน เมื่อส่งคําขอ

ใช้ค่า enum IconAdPlacement ที่แสดงถึงกรณีการใช้งานของคุณได้ใกล้เคียงที่สุด

Kotlin

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

Java

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