โฆษณาเปิดแอป

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

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

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

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

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

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

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

Android

ca-app-pub-3940256099942544/9257395921

iOS

ca-app-pub-3940256099942544/5575463023

การใช้งาน

ขั้นตอนหลักในการผสานรวมโฆษณาเปิดแอปมีดังนี้

  1. สร้างคลาสยูทิลิตี
  2. โหลดโฆษณาเปิดแอป
  3. ฟังเหตุการณ์โฆษณาเปิดแอป
  4. พิจารณาการหมดอายุของโฆษณา
  5. ฟังเหตุการณ์สถานะแอป
  6. แสดงโฆษณาเปิดแอป
  7. ล้างข้อมูลโฆษณาเปิดแอป
  8. โหลดโฆษณาเปิดแอปถัดไปล่วงหน้า

สร้างคลาสยูทิลิตี

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

using System; using UnityEngine; using GoogleMobileAds.Api; using GoogleMobileAds.Common;  /// <summary> /// Demonstrates how to use the Google Mobile Ads app open ad format. /// </summary> [AddComponentMenu("GoogleMobileAds/Samples/AppOpenAdController")] public class AppOpenAdController : MonoBehaviour {      // These ad units are configured to always serve test ads. #if UNITY_ANDROID     private string _adUnitId = "ca-app-pub-3940256099942544/9257395921"; #elif UNITY_IPHONE     string _adUnitId = "ca-app-pub-3940256099942544/5575463023"; #else     private string _adUnitId = "unused"; #endif      public bool IsAdAvailable     {         get         {             return _appOpenAd != null;         }     }      public void Start()     {         // Initialize the Google Mobile Ads SDK.         MobileAds.Initialize((InitializationStatus initStatus) =>         {             // This callback is called once the MobileAds SDK is initialized.         });     }      /// <summary>     /// Loads the app open ad.     /// </summary>     public void LoadAppOpenAd()     {     }      /// <summary>     /// Shows the app open ad.     /// </summary>     public void ShowAppOpenAd()     {     } } 

โหลดโฆษณาเปิดแอป

การโหลดโฆษณาเปิดแอปทำได้โดยใช้เมธอด Load() แบบคงที่ในคลาส AppOpenAd เมธอดโหลดต้องใช้รหัสหน่วยโฆษณา ออบเจ็กต์ AdRequest และตัวแฮนเดิลการเสร็จสมบูรณ์ซึ่งจะเรียกใช้เมื่อโหลดโฆษณาสำเร็จหรือไม่สำเร็จ ระบบจะระบุออบเจ็กต์ AppOpenAd ที่โหลดเป็นพารามิเตอร์ใน Completion Handler ตัวอย่างด้านล่างแสดงวิธี โหลด AppOpenAd

  // These ad units are configured to always serve test ads. #if UNITY_ANDROID    private string _adUnitId = "ca-app-pub-3940256099942544/9257395921"; #elif UNITY_IPHONE    string _adUnitId = "ca-app-pub-3940256099942544/5575463023"; #else   private string _adUnitId = "unused"; #endif    private AppOpenAd appOpenAd;    /// <summary>   /// Loads the app open ad.   /// </summary>   public void LoadAppOpenAd()   {       // Clean up the old ad before loading a new one.       if (appOpenAd != null)       {             appOpenAd.Destroy();             appOpenAd = null;       }        Debug.Log("Loading the app open ad.");        // Create our request used to load the ad.       var adRequest = new AdRequest();        // send the request to load the ad.       AppOpenAd.Load(_adUnitId, adRequest,           (AppOpenAd ad, LoadAdError error) =>           {               // if error is not null, the load request failed.               if (error != null || ad == null)               {                   Debug.LogError("app open ad failed to load an ad " +                                  "with error : " + error);                   return;               }                Debug.Log("App open ad loaded with response : "                         + ad.GetResponseInfo());                appOpenAd = ad;               RegisterEventHandlers(ad);           });   } 

ฟังเหตุการณ์โฆษณาเปิดแอป

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

private void RegisterEventHandlers(AppOpenAd ad) {     // Raised when the ad is estimated to have earned money.     ad.OnAdPaid += (AdValue adValue) =>     {         Debug.Log(String.Format("App open ad paid {0} {1}.",             adValue.Value,             adValue.CurrencyCode));     };     // Raised when an impression is recorded for an ad.     ad.OnAdImpressionRecorded += () =>     {         Debug.Log("App open ad recorded an impression.");     };     // Raised when a click is recorded for an ad.     ad.OnAdClicked += () =>     {         Debug.Log("App open ad was clicked.");     };     // Raised when an ad opened full screen content.     ad.OnAdFullScreenContentOpened += () =>     {         Debug.Log("App open ad full screen content opened.");     };     // Raised when the ad closed full screen content.     ad.OnAdFullScreenContentClosed += () =>     {         Debug.Log("App open ad full screen content closed.");     };     // Raised when the ad failed to open full screen content.     ad.OnAdFullScreenContentFailed += (AdError error) =>     {         Debug.LogError("App open ad failed to open full screen content " +                        "with error : " + error);     }; } 

พิจารณาการหมดอายุของโฆษณา

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

โฆษณาเปิดแอปมีระยะหมดเวลา 4 ชั่วโมง แคชเวลาในการโหลดใน_expireTime ตัวแปร

// send the request to load the ad. AppOpenAd.Load(_adUnitId, adRequest,     (AppOpenAd ad, LoadAdError error) =>     {         // If the operation failed, an error is returned.         if (error != null || ad == null)         {             Debug.LogError("App open ad failed to load an ad with error : " +                             error);             return;         }          // If the operation completed successfully, no error is returned.         Debug.Log("App open ad loaded with response : " + ad.GetResponseInfo());          // App open ads can be preloaded for up to 4 hours.         _expireTime = DateTime.Now + TimeSpan.FromHours(4);          _appOpenAd = ad;     }); 

อัปเดตพร็อพเพอร์ตี้ IsAdAvailable เพื่อตรวจสอบ _expireTime เพื่อยืนยันว่าโฆษณาที่โหลด ยังคงใช้งานได้

public bool IsAdAvailable {     get     {         return _appOpenAd != null                && _appOpenAd.IsLoaded()                && DateTime.Now < _expireTime;     } } 

ฟังเหตุการณ์สถานะแอป

ใช้ AppStateEventNotifier เพื่อฟังเหตุการณ์ที่แอปพลิเคชันทำงานอยู่เบื้องหน้าและ เบื้องหลัง คลาสนี้จะเรียกใช้เหตุการณ์ AppStateChanged ทุกครั้งที่ แอปพลิเคชันทำงานอยู่เบื้องหน้าหรือเบื้องหลัง

private void Awake() {     // Use the AppStateEventNotifier to listen to application open/close events.     // This is used to launch the loaded ad when we open the app.     AppStateEventNotifier.AppStateChanged += OnAppStateChanged; }  private void OnDestroy() {     // Always unlisten to events when complete.     AppStateEventNotifier.AppStateChanged -= OnAppStateChanged; } 

เมื่อเราจัดการสถานะ AppState.Foreground และ IsAdAvailable เป็น true เราจะเรียกใช้ ShowAppOpenAd() เพื่อแสดงโฆษณา

private void OnAppStateChanged(AppState state) {     Debug.Log("App State changed to : "+ state);      // if the app is Foregrounded and the ad is available, show it.     if (state == AppState.Foreground)     {         if (IsAdAvailable)         {             ShowAppOpenAd();         }     } } 

แสดงโฆษณาเปิดแอป

หากต้องการแสดงโฆษณาเปิดแอปที่โหลดแล้ว ให้เรียกใช้เมธอด Show() ในอินสแตนซ์ AppOpenAd โฆษณาจะแสดงได้เพียงครั้งเดียวต่อการโหลด ใช้เมธอด CanShowAd() เพื่อยืนยันว่าโฆษณาพร้อมแสดง

/// <summary> /// Shows the app open ad. /// </summary> public void ShowAppOpenAd() {     if (appOpenAd != null && appOpenAd.CanShowAd())     {         Debug.Log("Showing app open ad.");         appOpenAd.Show();     }     else     {         Debug.LogError("App open ad is not ready yet.");     } } 

ล้างข้อมูลโฆษณาเปิดแอป

เมื่อใช้ AppOpenAd เสร็จแล้ว อย่าลืมเรียกใช้เมธอด Destroy() ก่อนที่จะทิ้งการอ้างอิงถึง AppOpenAd

appOpenAd.Destroy(); 

การดำเนินการนี้จะแจ้งให้ปลั๊กอินทราบว่าไม่ได้ใช้ออบเจ็กต์อีกต่อไปและสามารถเรียกคืนหน่วยความจำที่ออบเจ็กต์ใช้ได้ การไม่เรียกใช้เมธอดนี้จะทำให้เกิดหน่วยความจำรั่ว

โหลดโฆษณาเปิดแอปถัดไปล่วงหน้า

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

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

private void RegisterReloadHandler(AppOpenAd ad) {     ...     // Raised when the ad closed full screen content.     ad.OnAdFullScreenContentClosed += ()     {         Debug.Log("App open ad full screen content closed.");          // Reload the ad so that we can show another as soon as possible.         LoadAppOpenAd();     };     // Raised when the ad failed to open full screen content.     ad.OnAdFullScreenContentFailed += (AdError error) =>     {         Debug.LogError("App open ad failed to open full screen content " +                        "with error : " + error);          // Reload the ad so that we can show another as soon as possible.         LoadAppOpenAd();     }; } 

การเริ่มแอปแบบ Cold Start และหน้าจอการโหลด

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

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

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

แนวทางปฏิบัติแนะนำ

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

  • แสดงโฆษณาการเปิดแอปครั้งแรกหลังจากที่ผู้ใช้ใช้แอปของคุณ 2-3 ครั้ง
  • แสดงโฆษณาเปิดแอปในช่วงเวลาที่ผู้ใช้ต้องรอให้แอปโหลด
  • หากคุณมีหน้าจอการโหลดภายใต้โฆษณาเมื่อเปิดแอปและหน้าจอการโหลด โหลดเสร็จก่อนที่จะปิดโฆษณา ให้ปิดหน้าจอการโหลดใน OnAdDidDismissFullScreenContent ตัวแฮนเดิลเหตุการณ์
  • ในแพลตฟอร์ม iOS AppStateEventNotifier จะสร้างอินสแตนซ์ของ AppStateEventClient GameObject เหตุการณ์ต้องมี GameObject นี้จึงจะเริ่มทำงานได้ ดังนั้นอย่าทำลาย เหตุการณ์จะหยุดทำงานหากมีการทำลาย GameObject

แหล่งข้อมูลเพิ่มเติม