ตั้งค่าโฆษณาเปิดแอป

เลือกแพลตฟอร์ม: Android iOS Unity Flutter Android (เดิม)

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

ดูข้อมูลเพิ่มเติมได้ที่ คำแนะนำเกี่ยวกับโฆษณาเปิดแอป

คู่มือนี้อธิบายวิธีผสานรวมโฆษณาเปิดแอปเข้ากับแอป Android

ก่อนเริ่มต้น

ก่อนดำเนินการต่อ ให้ทำดังนี้

  • ตั้งค่า GMA Next-Gen SDK
  • ใช้รหัสหน่วยโฆษณาเปิดแอปทดสอบ ca-app-pub-3940256099942544/9257395921
    • เมื่อสร้างและทดสอบแอป โปรดตรวจสอบว่าคุณใช้โฆษณาทดสอบแทนโฆษณาจริง หากคุณไม่ใช้รหัสหน่วยโฆษณาทดสอบ Google อาจ ระงับบัญชีของคุณ
    • ก่อนเผยแพร่แอป ให้แทนที่รหัสนี้ด้วยรหัสหน่วยโฆษณา
    • ดูรายละเอียดเกี่ยวกับGMA Next-Gen SDKโฆษณาทดสอบได้ที่ เปิดใช้โฆษณาทดสอบ

ทำความเข้าใจการโหลดโฆษณาล่วงหน้า (เบต้า)

การโหลดโฆษณาล่วงหน้า (เบต้า) ใน GMA Next-Gen SDK จะทำให้การโหลดและการแคชโฆษณาเป็นไปโดยอัตโนมัติ

การโหลดโฆษณาล่วงหน้ามีประโยชน์ดังนี้

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

เริ่มการโหลดโฆษณาล่วงหน้า

หากต้องการเริ่มโหลดโฆษณาล่วงหน้า ให้เรียกใช้เมธอด startPreload() เพียงครั้งเดียวเมื่อเริ่มแอป หลังจากเรียกใช้startPreload()เมธอด GMA Next-Gen SDK ระบบจะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองส่งคำขอที่ไม่สำเร็จอีกครั้งสำหรับ การกำหนดค่าที่โหลดล่วงหน้า

ตัวอย่างต่อไปนี้แสดงวิธีเริ่มโหลดโฆษณาล่วงหน้า

Kotlin

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

Java

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 จะไม่แสดงโฆษณา

เมื่อมีออบเจ็กต์โฆษณาที่ใช้ได้ ให้เรียกใช้เมธอด show เพื่อแสดงโฆษณา ตัวอย่างต่อไปนี้แสดงวิธีดึงและแสดงโฆษณาที่โหลดล่วงหน้า

Kotlin

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

Java

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() หากต้องการอ่านข้อมูลการตอบกลับโฆษณาโดยไม่แสดง ให้ดูอ่านข้อมูลการตอบกลับ

รอเหตุการณ์โฆษณา

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

Kotlin

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

Java

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

ไม่บังคับ: ฟังเหตุการณ์การโหลดล่วงหน้า

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

ตัวอย่างต่อไปนี้แสดงวิธีลงทะเบียนเหตุการณ์โฆษณาที่โหลดล่วงหน้า

Kotlin

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)

Java

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 จะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองส่งคำขอที่ล้มเหลวอีกครั้ง สำหรับการกำหนดค่าที่โหลดล่วงหน้า

ไม่บังคับ: ตรวจสอบความพร้อมใช้งานของโฆษณา

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

Kotlin

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

Java

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

ไม่บังคับ: ตั้งค่าขนาดบัฟเฟอร์

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

ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่าขนาดบัฟเฟอร์

Kotlin

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)

Java

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 บังคับใช้ขีดจํากัดระดับแอปสําหรับจํานวนโฆษณาที่โหลดล่วงหน้าทั้งหมด ในหน่วยโฆษณาทั้งหมดและรหัสการโหลดล่วงหน้า

  • ขีดจำกัดเริ่มต้น: Google จะเก็บโฆษณาที่โหลดล่วงหน้าไว้ในหน่วยความจำสูงสุด 6 รายการ ขีดจำกัดนี้ใช้ร่วมกันในทุกรูปแบบและรหัสการโหลดล่วงหน้า
  • เราขอแนะนำให้ตั้งค่าขนาดบัฟเฟอร์เป็น 2 สำหรับรหัสการโหลดล่วงหน้าแต่ละรายการ

ไม่บังคับ: หยุดโหลดโฆษณาล่วงหน้า

หากไม่ต้องการแสดงโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ อีกในเซสชัน คุณสามารถหยุดการโหลดโฆษณาล่วงหน้าได้ หากต้องการหยุดโหลดโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ ให้เรียกใช้เมธอด destroy() โดยใช้รหัสการโหลดล่วงหน้า การเรียกใช้เมธอด destroy() จะนำโฆษณาที่โหลดล่วงหน้าทั้งหมดที่เชื่อมโยง กับรหัสการโหลดล่วงหน้าออกจากแคช

ตัวอย่างต่อไปนี้แสดงวิธีหยุดการโหลดโฆษณาล่วงหน้า

Kotlin

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

Java

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

ไม่บังคับ: อ่านข้อมูลคำตอบ

อ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไปโดยไม่ต้องนำโฆษณาออกจากแคช

ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไป

Kotlin

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

Java

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());

จัดการ Cold Start และหน้าจอโหลด

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

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

คำแนะนำ

ทำตามคำแนะนำต่อไปนี้สำหรับโฆษณาเปิดแอป

  • อย่าแสดงโฆษณาเปิดแอปเมื่อเริ่มแอปเป็นครั้งแรก
  • หากหน้าจอการโหลดโหลดเสร็จขณะที่โฆษณากำลังแสดง ให้ปิดหน้าจอการโหลดในเมธอด Callback เมื่อปิดโฆษณา
  • โฆษณาเปิดแอปจะหมดอายุ 4 ชั่วโมงหลังจากโหลด อย่าแสดงโฆษณาเปิดแอปที่ โหลดมานานกว่า 4 ชั่วโมง