Quảng cáo khi mở ứng dụng

Quảng cáo khi mở ứng dụng là một định dạng quảng cáo đặc biệt dành cho những nhà xuất bản muốn kiếm tiền màn hình tải ứng dụng của họ. Quảng cáo khi mở ứng dụng có thể được thiết kế để đóng bất cứ lúc nào được hiển thị khi người dùng đưa ứng dụng của bạn lên nền trước.

Quảng cáo khi mở ứng dụng tự động hiển thị một vùng nhỏ chứa thương hiệu để người dùng biết rằng họ đang ở ứng dụng của bạn. Sau đây là ví dụ về hình thức của quảng cáo khi mở ứng dụng:

Điều kiện tiên quyết

Luôn thử nghiệm bằng quảng cáo thử nghiệm

Mã mẫu sau đây chứa một mã đơn vị quảng cáo mà bạn có thể sử dụng để yêu cầu quảng cáo thử nghiệm. Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm thay vì quảng cáo thực tế cho mọi yêu cầu, giúp đảm bảo an toàn khi sử dụng.

Tuy nhiên, sau khi đăng ký một ứng dụng trong Giao diện web AdMob và tạo đơn vị quảng cáo của riêng bạn Mã nhận dạng để sử dụng trong ứng dụng của bạn, hãy định cấu hình thiết bị của bạn làm quá trình kiểm tra một cách rõ ràng thiết bị trong khoảng thời gian phát triển ứng dụng.

Android

ca-app-pub-3940256099942544/9257395921

iOS

ca-app-pub-3940256099942544/5575463023

Triển khai

Các bước chính để tích hợp quảng cáo khi mở ứng dụng là:

  1. Tạo một lớp tiện ích
  2. Tải quảng cáo khi mở ứng dụng
  3. Theo dõi các sự kiện của quảng cáo khi mở ứng dụng
  4. Xem xét thời hạn của quảng cáo
  5. Theo dõi các sự kiện về trạng thái ứng dụng
  6. Hiển thị quảng cáo khi mở ứng dụng
  7. Dọn dẹp quảng cáo khi mở ứng dụng
  8. Tải trước quảng cáo khi mở ứng dụng tiếp theo

Tạo một lớp tiện ích

Tạo một lớp mới có tên là AppOpenAdController để tải quảng cáo. Lớp này kiểm soát một biến thực thể để theo dõi một quảng cáo đã tải và mã đơn vị quảng cáo cho từng nền tảng.

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

Tải quảng cáo khi mở ứng dụng

Bạn có thể tải một quảng cáo khi mở ứng dụng bằng cách sử dụng phương thức Load() tĩnh trên Lớp AppOpenAd. Phương thức tải yêu cầu một mã đơn vị quảng cáo, AdRequest và một trình xử lý hoàn thành. được gọi khi tải quảng cáo thành công hoặc không thành công. Đối tượng AppOpenAd đã tải là được cung cấp dưới dạng tham số trong trình xử lý hoàn thành. Ví dụ bên dưới cho thấy cách để tải một 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);
          });
  }

Theo dõi các sự kiện của quảng cáo khi mở ứng dụng

Để tuỳ chỉnh thêm hành vi của quảng cáo, bạn có thể kết hợp với một số các sự kiện trong vòng đời của quảng cáo: mở, đóng, v.v. Nghe các sự kiện này bằng cách đăng ký người được uỷ quyền như trình bày dưới đây.

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

Xem xét thời hạn của quảng cáo

Để đảm bảo bạn không hiển thị quảng cáo đã hết hạn, hãy thêm một phương thức vào AppOpenAdController để kiểm tra xem quảng cáo của bạn đã tải bao lâu rồi. Sau đó, hãy sử dụng phương thức đó để kiểm tra xem quảng cáo có còn hợp lệ hay không.

Quảng cáo khi mở ứng dụng có thời gian chờ là 4 giờ. Lưu thời gian tải vào bộ nhớ đệm trong _expireTime biến.

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

Cập nhật thuộc tính IsAdAvailable để kiểm tra _expireTime nhằm xác nhận tệp đã tải quảng cáo vẫn hợp lệ.

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

Theo dõi các sự kiện về trạng thái ứng dụng

Sử dụng AppStateEventNotifier để theo dõi nền trước và sự kiện trong nền. Lớp này sẽ kích hoạt sự kiện AppStateChanged bất cứ khi nào nền trước hoặc nền của ứng dụng.

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

Khi chúng ta xử lý trạng thái AppState.ForegroundIsAdAvailabletrue, chúng tôi sẽ gọi ShowAppOpenAd() để hiển thị quảng cáo.

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

Hiển thị quảng cáo khi mở ứng dụng

Để hiển thị quảng cáo khi mở ứng dụng đã tải, hãy gọi phương thức Show() trên Thực thể AppOpenAd. Quảng cáo chỉ có thể xuất hiện một lần cho mỗi lượt tải. Sử dụng CanShowAd() để xác minh rằng quảng cáo đã sẵn sàng để hiển thị.

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

Dọn dẹp quảng cáo khi mở ứng dụng

Khi bạn đã tạo xong AppOpenAd, hãy nhớ gọi Destroy() trước khi xoá tham chiếu đến nó:

appOpenAd.Destroy();

Thao tác này sẽ thông báo cho trình bổ trợ rằng đối tượng không còn được sử dụng nữa và bộ nhớ mà đối tượng đó không còn được sử dụng. chiếm lại có thể được xác nhận lại. Nếu bạn không gọi phương thức này, bộ nhớ sẽ bị rò rỉ.

Tải trước quảng cáo khi mở ứng dụng tiếp theo

AppOpenAd là đối tượng dùng một lần. Điều này có nghĩa là sau khi một quảng cáo khi mở ứng dụng xuất hiện, thì đối tượng đó sẽ không dùng được nữa. Cách yêu cầu một quảng cáo khi mở ứng dụng khác, bạn sẽ cần tạo một đối tượng AppOpenAd mới.

Để chuẩn bị quảng cáo khi mở ứng dụng cho cơ hội hiển thị tiếp theo, hãy tải trước quảng cáo khi mở ứng dụng sau khi OnAdFullScreenContentClosed hoặc OnAdFullScreenContentFailed sự kiện quảng cáo đã được tạo.

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

Khởi động nguội và màn hình tải

Cho đến nay, tài liệu này giả định rằng bạn chỉ hiển thị quảng cáo khi mở ứng dụng khi người dùng đưa ứng dụng của bạn lên nền trước khi ứng dụng bị tạm ngưng trong bộ nhớ. "Khởi động nguội" xảy ra khi ứng dụng của bạn đã được khởi chạy nhưng trước đó không bị tạm ngưng trong bộ nhớ.

Một ví dụ về khởi động nguội là khi người dùng mở ứng dụng lần đầu tiên. Trong trường hợp khởi động nguội, bạn sẽ không có quảng cáo khi mở ứng dụng đã tải trước đó sẵn sàng được hiển thị ngay lập tức. Độ trễ giữa thời điểm bạn yêu cầu quảng cáo và nhận được quảng cáo Tính năng quay lại có thể tạo ra một tình huống trong đó người dùng có thể sử dụng ngay ứng dụng của bạn trước khi bị bất ngờ bởi quảng cáo không phù hợp. Bạn nên tránh điều này vì đây là trải nghiệm người dùng kém.

Cách ưu tiên để sử dụng quảng cáo khi mở ứng dụng khi khởi động nguội là sử dụng màn hình tải để tải nội dung trò chơi hoặc ứng dụng của bạn và chỉ hiển thị quảng cáo khi tải màn hình. Nếu ứng dụng của bạn đã tải xong và đã đưa người dùng đến nội dung của ứng dụng, đừng hiển thị quảng cáo.

Các phương pháp hay nhất

Quảng cáo khi mở ứng dụng giúp bạn kiếm tiền từ màn hình tải của ứng dụng khi ứng dụng lần đầu tiên khởi chạy và chuyển đổi ứng dụng, nhưng điều quan trọng là phải giữ các để người dùng thích sử dụng ứng dụng của bạn.

  • Hiển thị quảng cáo khi mở ứng dụng đầu tiên sau khi người dùng đã sử dụng ứng dụng của bạn vài lần.
  • Hiển thị quảng cáo khi mở ứng dụng vào những thời điểm người dùng chờ đợi để tải ứng dụng.
  • Nếu bạn có màn hình tải trong quảng cáo khi mở ứng dụng và màn hình tải tải xong trước khi quảng cáo bị đóng, hãy đóng màn hình tải trong trình xử lý sự kiện OnAdDidDismissFullScreenContent.
  • Trên nền tảng iOS, AppStateEventNotifier sẽ tạo thực thể cho một AppStateEventClient GameObject GameObject này là bắt buộc cho các sự kiện để bắn, nên đừng phá huỷ nó. Các sự kiện ngừng kích hoạt nếu GameObject là bị huỷ bỏ.

Tài nguyên khác