原生重叠式广告

开始使用

原生叠加广告通过平台原本就有的界面组件向用户呈现。这些广告会以叠加层的形式显示在应用之上。这与横幅广告的运作方式类似,但可以自定义广告的外观。

原生重叠式广告支持中介和视频广告。这是原生重叠式广告相较于原生广告的一大优势。

本指南介绍了如何在 Unity 应用中植入原生叠加式广告,以及在此过程中需要注意的一些重要事项。

前提条件

  • 完成入门指南
  • Unity 插件 9.0.0 或更高版本。

务必用测试广告进行测试

以下示例代码包含一个广告单元 ID,可供您用来请求测试广告。该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告(而不是实际投放的广告),因此能够安全地使用。

但是,在 AdMob 网页界面中注册应用并创建您自己的广告单元 ID 以便在应用中使用后,请在开发期间明确地将您的设备配置为测试设备

Android

ca-app-pub-3940256099942544/2247696110

iOS

ca-app-pub-3940256099942544/3986624511

加载原生重叠式广告

原生叠加式广告的加载是通过对 NativeOverlayAd 类使用静态 Load() 方法完成的。已加载的 NativeOverlayAd 对象会以完成处理程序中的参数的形式提供。

以下代码使用 NativeOverlayAd 加载广告:



  // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/2247696110";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/3986624511";
#else
  private string _adUnitId = "unused";
#endif


private NativeOverlayAd _nativeOverlayAd;

/// <summary>
/// Loads the ad.
/// </summary>
public void LoadAd()
{
    // Clean up the old ad before loading a new one.
    if (_nativeOverlayAd != null)
    {
        DestroyAd();
    }

    Debug.Log("Loading native overlay ad.");

    // Create a request used to load the ad.
    var adRequest = new AdRequest();

    // Optional: Define native ad options.
    var options = new NativeAdOptions
    {
        AdChoicesPosition = AdChoicesPlacement.TopRightCorner,
        MediaAspectRatio = NativeMediaAspectRatio.Any,
    };

    // Send the request to load the ad.
    NativeOverlayAd.Load(_adUnitId, adRequest, options,
        (NativeOverlayAd ad, LoadAdError error) =>
    {
        if (error != null)
        {
            Debug.LogError("Native Overlay ad failed to load an ad " +
                           " with error: " + error);
            return;
        }

        // The ad should always be non-null if the error is null, but
        // double-check to avoid a crash.
        if (ad == null)
        {
            Debug.LogError("Unexpected error: Native Overlay ad load event " +
                           " fired with null ad and null error.");
            return;
        }

        // The operation completed successfully.
        Debug.Log("Native Overlay ad loaded with response : " +
                   ad.GetResponseInfo());
        _nativeOverlayAd = ad;

        // Register to ad events to extend functionality.
        RegisterEventHandlers(ad);
    });
}

呈现和设置原生叠加式广告的样式

系统使用 NativeTemplateStyle 呈现原生重叠式广告。此类定义了可用于自定义广告外观的字段。

TemplateID 是一个必需的字符串,用于定义用于呈现原生叠加式广告的原生模板。使用 NativeTemplateID 常量为您的广告选择合适的原生模板。

以下代码使用中等模板和自定义样式呈现原生叠加层广告。

/// <summary>
/// Renders the ad.
/// </summary>
public void RenderAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Rendering Native Overlay ad.");

        // Define a native template style with a custom style.
        var style = new NativeTemplateStyle
        {
            TemplateID = NativeTemplateID.Medium,
            MainBackgroundColor = Color.red,
            CallToActionText = new NativeTemplateTextStyles
            {
                BackgroundColor = Color.green,
                FontColor = Color.white,
                FontSize = 9,
                Style = NativeTemplateFontStyle.Bold
            }
        };

        // Renders a native overlay ad at the default size
        // and anchored to the bottom of the screne.
        _nativeOverlayAd.RenderTemplate(style, AdPosition.Bottom);
    }
}

显示和隐藏原生叠加广告

以下代码演示了如何展示已加载的原生叠加层广告。

/// <summary>
/// Shows the ad.
/// </summary>
public void ShowAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Showing Native Overlay ad.");
        _nativeOverlayAd.Show();
    }
}

隐藏原生叠加广告

以下代码演示了如何隐藏原生叠加层广告。

/// <summary>
/// Hides the ad.
/// </summary>
public void HideAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Hiding Native Overlay ad.");
        _nativeOverlayAd.Hide();
    }
}

销毁原生叠加式广告

使用完原生叠加广告后,请务必调用 Destroy() 以释放资源。

/// <summary>
/// Destroys the native overlay ad.
/// </summary>
public void DestroyAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Destroying native overlay ad.");
        _nativeOverlayAd.Destroy();
        _nativeOverlayAd = null;
    }
}

后续步骤