Biểu ngữ thích ứng

Biểu ngữ thích ứng là thế hệ tiếp theo của quảng cáo thích ứng, giúp bạn tăng tối đa hiệu quả hoạt động bằng cách tối ưu hóa kích thước quảng cáo cho từng thiết bị. Nhờ cải thiện dựa trên biểu ngữ thông minh, vốn chỉ hỗ trợ chiều cao cố định, biểu ngữ thích ứng cho phép bạn chỉ định chiều rộng của quảng cáo và sử dụng chiều rộng này để xác định kích thước quảng cáo tối ưu.

Để chọn kích thước quảng cáo phù hợp nhất, biểu ngữ thích ứng sử dụng tỷ lệ khung hình cố định thay vì chiều cao cố định. Do đó, quảng cáo biểu ngữ sẽ chiếm phần màn hình nhất quán hơn trên tất cả các thiết bị và mang lại cơ hội cải thiện hiệu quả hoạt động.

Khi sử dụng biểu ngữ thích ứng, xin lưu ý rằng biểu ngữ này sẽ luôn hiển thị ở một kích thước không đổi cho một thiết bị và chiều rộng nhất định. Sau khi đã thử nghiệm bố cục trên một thiết bị nhất định, bạn có thể chắc chắn rằng kích thước quảng cáo đó sẽ không thay đổi. Tuy nhiên, kích thước của quảng cáo biểu ngữ có thể thay đổi trên các thiết bị khác nhau. Do đó, bố cục của bạn phải thích ứng với việc quảng cáo thay đổi chiều cao. Trong một số ít trường hợp, quảng cáo có thể không lấp đầy toàn bộ kích thước thích ứng và một quảng cáo có kích thước tiêu chuẩn sẽ xuất hiện ở giữa không gian này.

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

Những trường hợp nên sử dụng biểu ngữ thích ứng

Mục đích của biểu ngữ thích ứng là để thay thế cho cả biểu ngữ có kích thước tiêu chuẩn 320x50 và định dạng biểu ngữ thông minh.

Các kích thước biểu ngữ này thường được dùng làm biểu ngữ cố định (loại biểu ngữ thường xuất hiện ở phía trên cùng hoặc dưới cùng của màn hình.

Đối với các biểu ngữ cố định như vậy, tỷ lệ khung hình khi sử dụng biểu ngữ thích ứng sẽ tương tự như tỷ lệ khung hình của quảng cáo chuẩn 320x50. Hãy xem 3 ví dụ dưới đây:


Biểu ngữ 320x50

Biểu ngữ thích ứng

Biểu ngữ thông minh

Biểu ngữ thích ứng sử dụng kích thước màn hình có sẵn hiệu quả hơn. Ngoài ra, so với biểu ngữ thông minh, bạn nên chọn biểu ngữ thích ứng vì:

  • Biểu ngữ thích ứng chấp nhận mọi chiều rộng mà bạn chỉ định, thay vì buộc quảng cáo phải hiển thị trên toàn màn hình, cho phép bạn xem xét vùng an toàn trên iOS và hiển thị vết cắt màn hình trên Android.

  • Biểu ngữ thích ứng lựa chọn chiều cao tối ưu cho từng thiết bị, thay vì sử dụng chiều cao cố định trên các thiết bị có kích thước khác nhau. Việc này giúp giảm thiểu tác động của sự phân mảnh thiết bị.

Lưu ý khi triển khai

Khi triển khai biểu ngữ thích ứng trong ứng dụng, hãy lưu ý những điểm sau:

  • Đảm bảo bạn đang sử dụng phiên bản mới nhất của plugin Unity quảng cáo trên thiết bị di động của Google. Để sử dụng tính năng dàn xếp, hãy sử dụng phiên bản mới nhất của mỗi bộ chuyển đổi dàn xếp.
  • Kích thước biểu ngữ thích ứng hoạt động hiệu quả nhất khi sử dụng toàn bộ chiều rộng có sẵn. Trong hầu hết các trường hợp, đây sẽ là chiều rộng tối đa của màn hình thiết bị đang sử dụng. Hãy nhớ cân nhắc vùng an toàn (nếu có).
  • SDK quảng cáo trên thiết bị di động của Google sẽ xác định kích thước biểu ngữ với chiều cao quảng cáo tối ưu cho chiều rộng nhất định khi sử dụng API kích thước quảng cáo thích ứng.
  • Có 3 phương pháp để thu thập kích thước quảng cáo cho biểu ngữ thích ứng: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth phương pháp dành cho biểu ngữ ngang, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthphương pháp dành cho biểu ngữ dọc và AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth phương pháp dành cho hướng hiện tại vào thời điểm thực thi.
  • Kích thước trả về cho một chiều rộng nhất định trên một thiết bị nhất định sẽ luôn giống nhau, do đó, khi đã thử nghiệm bố cục trên một thiết bị nhất định, bạn có thể chắc chắn rằng kích thước quảng cáo sẽ không thay đổi.
  • Chiều cao của biểu ngữ cố định không bao giờ lớn hơn 15% chiều cao của thiết bị hoặc 90 pixel không phụ thuộc vào mật độ, tùy vào kích thước nào nhỏ hơn. Đồng thời, chiều cao của biểu ngữ cố định không bao giờ nhỏ hơn 50 pixel không phụ thuộc vào mật độ.
  • Đối với các biểu ngữ có chiều rộng đầy đủ, bạn có thể sử dụng cờ AdSize.FullWidth thay vì cung cấp chiều rộng cụ thể.

Bắt đầu nhanh

Thực hiện các bước dưới đây để triển khai một biểu ngữ thích ứng cố định đơn giản.

  1. Thu thập kích thước quảng cáo biểu ngữ thích ứng. Kích thước bạn thu được sẽ dùng để yêu cầu biểu ngữ thích ứng. Để có kích thước quảng cáo thích ứng, hãy đảm bảo rằng bạn:
    1. Thu thập chiều rộng của thiết bị đang dùng theo pixel không phụ thuộc vào mật độ hoặc đặt chiều rộng riêng nếu bạn không muốn sử dụng toàn bộ chiều rộng của màn hình. Vì các API Unity như Screen.width sẽ trả về pixel tuyệt đối, nên bạn cần chia theo tỷ lệ của thiết bị (có thể truy xuất từ MobileAds.Utils.GetDeviceScale()).
    2. Sử dụng cờ AdSize.FullWidth cho các biểu ngữ có chiều rộng đầy đủ.
    3. Sử dụng các phương thức tĩnh thích hợp trên lớp kích thước quảng cáo (chẳng hạn như AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)) để thu thập đối tượng AdSize thích ứng cho hướng hiện tại.
  2. Tạo một đối tượng BannerView có mã đơn vị quảng cáo, kích thước thích ứng và vị trí phù hợp cho quảng cáo của bạn.
  3. Tạo đối tượng yêu cầu quảng cáo và tải biểu ngữ của bạn bằng cách sử dụng phương thức LoadAd() trên chế độ xem quảng cáo đã chuẩn bị, giống như cách bạn thực hiện với yêu cầu biểu ngữ thông thường.

Ví dụ về mã

Sau đây là ví dụ về tập lệnh có chức năng tải và tải lại một biểu ngữ thích ứng để hiển thị vừa với chiều rộng của màn hình, có tính đến vùng an toàn:

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class NewMonoBehaviour : MonoBehaviour
{
    private BannerView bannerView;

    // Use this for initialization
    void Start()
    {
        RequestBanner();
    }

    public void OnGUI()
    {
        GUI.skin.label.fontSize = 60;
        Rect textOutputRect = new Rect(
          0.15f * Screen.width,
          0.25f * Screen.height,
          0.7f * Screen.width,
          0.3f * Screen.height);
        GUI.Label(textOutputRect, "Adaptive Banner Example");
    }

    private void RequestBanner()
    {
        // These ad units are configured to always serve test ads.
        #if UNITY_EDITOR
            string adUnitId = "unused";
        #elif UNITY_ANDROID
            string adUnitId = "ca-app-pub-3212738706492790/6113697308";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3212738706492790/5381898163";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Clean up banner ad before creating a new one.
        if (this.bannerView != null)
        {
            this.bannerView.Destroy();
        }

        AdSize adaptiveSize =
                AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);

        this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Register for ad events.
        this.bannerView.OnAdLoaded += this.HandleAdLoaded;
        this.bannerView.OnAdFailedToLoad += this.HandleAdFailedToLoad;
        this.bannerView.OnAdOpening += this.HandleAdOpened;
        this.bannerView.OnAdClosed += this.HandleAdClosed;
        this.bannerView.OnAdLeavingApplication += this.HandleAdLeftApplication;

        AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

        // Load a banner ad.
        this.bannerView.LoadAd(adRequest);
    }

    #region Banner callback handlers

    public void HandleAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
        MonoBehaviour.print(String.Format("Ad Height: {0}, width: {1}",
            this.bannerView.GetHeightInPixels(),
            this.bannerView.GetWidthInPixels()));
    }

    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
                "HandleFailedToReceiveAd event received with message: " + args.Message);
    }

    public void HandleAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleAdLeftApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeftApplication event received");
    }

    #endregion
}

Ở đây, hàm AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth dùng để lấy kích thước của biểu ngữ ở một vị trí cố định cho hướng giao diện hiện tại. Để tải trước một biểu ngữ cố định theo một hướng nhất định, hãy sử dụng hàm có liên quan từ AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthAdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth.