การโหลดโฆษณาล่วงหน้า (เบต้า)

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

การโหลดโฆษณาล่วงหน้ามีข้อดีเหนือกว่าการโหลดโฆษณาด้วยตนเองดังนี้

  • การจัดการการอ้างอิง: เก็บโฆษณาที่โหลดไว้เพื่อให้คุณไม่ต้องคงการอ้างอิงไว้จนกว่าจะพร้อมแสดงโฆษณา
  • การโหลดซ้ำอัตโนมัติ: โหลดโฆษณาใหม่โดยอัตโนมัติเมื่อคุณดึงโฆษณาออกจากแคช
  • การลองใหม่ที่มีการจัดการ: ลองส่งคำขอที่ดำเนินการไม่สำเร็จอีกครั้งโดยอัตโนมัติโดยใช้ Exponential Backoff
  • การจัดการการหมดอายุ: รีเฟรชโฆษณาโดยอัตโนมัติก่อนที่โฆษณาจะหมดอายุ (โดยปกติจะใช้เวลา 1 ชั่วโมง)
  • การเพิ่มประสิทธิภาพแคช: หากคุณใช้ขนาดแคชมากกว่า 1 Google Mobile Ads Flutter Plugin จะเพิ่มประสิทธิภาพลำดับแคชเพื่อแสดงโฆษณาที่ดีที่สุด

คู่มือนี้ครอบคลุมการกำหนดค่าโฆษณาที่โหลดล่วงหน้า การตรวจสอบความพร้อมใช้งานของโฆษณาที่โหลดล่วงหน้า และการแสดงโฆษณาที่โหลดล่วงหน้า

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

คุณต้องตั้งค่า Google Mobile Ads Flutter Plugin ก่อนจึงจะดำเนินการต่อในบทแนะนำนี้ได้

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

เมื่อแอปเริ่มทำงาน ให้เรียกใช้เมธอด start 1 ครั้ง หลังจากที่คุณเรียกใช้เมธอด start แล้ว Google Mobile Ads Flutter Plugin จะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองส่งคำขอที่ล้มเหลวอีกครั้งสำหรับการกำหนดค่าที่โหลดไว้ล่วงหน้า

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

InterstitialAdPreloader.start(
  preloadId: _adUnitId,
  preloadConfiguration: PreloadConfiguration(adUnitId: _adUnitId),
  callback: const PreloadCallback(),
);

แทนที่ _adUnitId ด้วยรหัสหน่วยโฆษณา

รับและแสดงโฆษณาที่โหลดล่วงหน้า

เมื่อใช้การโหลดโฆษณาล่วงหน้า Google Mobile Ads Flutter Plugin จะเก็บโฆษณาที่แคชไว้ เมื่อต้องการแสดงโฆษณา ให้เรียกใช้เมธอด pollAd Google Mobile Ads Flutter Plugin จะดึงโฆษณาที่พร้อมใช้งานและโหลดโฆษณาถัดไปล่วงหน้าโดยอัตโนมัติในเบื้องหลัง

หลีกเลี่ยงการเรียกใช้เมธอด pollAd จนกว่าคุณจะพร้อมแสดงโฆษณา การเก็บโฆษณาไว้ในแคชช่วยให้ Google Mobile Ads Flutter Plugin รีเฟรชโฆษณาที่หมดอายุโดยอัตโนมัติและเพิ่มประสิทธิภาพแคชได้

ตัวอย่างต่อไปนี้จะดึงข้อมูลและแสดงโฆษณาที่โหลดไว้ล่วงหน้า

void _pollAndShowAd() async {
  final InterstitialAd? ad = await InterstitialAdPreloader.pollAd(_adUnitId);
  if (ad != null) {
    _interstitialAd = ad;
    ad.fullScreenContentCallback = FullScreenContentCallback(
      onAdImpression: (ad) {
        // Called when an impression occurs on the ad.
        debugPrint('Ad recorded an impression.');
      },
    );
    ad.onPaidEvent = (ad, valueMicros, precision, currencyCode) {
      // Called when an ad is estimated to have earned money.
      debugPrint('Ad paid: $valueMicros $currencyCode.');
    };
    // Show the ad.
    await ad.show();
  }
}

ตรวจสอบความพร้อมใช้งานของโฆษณาที่โหลดล่วงหน้า

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

ดูความพร้อมใช้งานของโฆษณาที่โหลดล่วงหน้า

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

void _checkAdAvailability() async {
  final bool isAvailable = await InterstitialAdPreloader.isAdAvailable(
    _adUnitId,
  );
  debugPrint('Is ad available: $isAvailable');
}

รอฟังความพร้อมใช้งานของโฆษณาที่โหลดไว้ล่วงหน้า

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

เหตุการณ์โหลดล่วงหน้ามีไว้เพื่อวัตถุประสงค์ด้านการวิเคราะห์ ภายใน Callback ของเหตุการณ์โหลดล่วงหน้า ให้ทำดังนี้

  • ไม่ต้องโทรหา start
  • หลีกเลี่ยงการเรียกใช้ pollAd เว้นแต่จะแสดงโฆษณาทันที

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

InterstitialAdPreloader.start(
  preloadId: _adUnitId,
  preloadConfiguration: PreloadConfiguration(adUnitId: _adUnitId),
  callback: PreloadCallback(
    onAdPreloaded: (preloadId, responseInfo) {
      debugPrint('Ad preloaded for ID: $preloadId');
    },
    onAdFailedToPreload: (preloadId, error) {
      debugPrint('Ad failed to preload for ID: $preloadId. Error: $error');
    },
    onAdsExhausted: (preloadId) {
      debugPrint('All preloaded ads exhausted for ID: $preloadId');
    },
  ),
);

หยุดโหลดโฆษณาล่วงหน้า

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

void _stopPreloading() async {
  await InterstitialAdPreloader.destroy(_adUnitId);
}

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

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

InterstitialAdPreloader.start(
  preloadId: _adUnitId,
  preloadConfiguration: PreloadConfiguration(
    adUnitId: _adUnitId,
    bufferSize: 3,
  ),
  callback: const PreloadCallback(),
);

ขีดจำกัดแคชที่โหลดล่วงหน้า

Google Mobile Ads Flutter Plugin บังคับใช้ขีดจำกัดทั่วทั้งแอปสำหรับจำนวนโฆษณาที่โหลดล่วงหน้าทั้งหมดในหน่วยโฆษณาและรหัสการโหลดล่วงหน้าทั้งหมด ดังนี้

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