原生重叠式广告
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
开始使用
原生重叠式广告通过平台原本就有的界面组件向用户呈现。这种广告以叠加层的形式显示在应用的上层。它与横幅广告的运作方式类似,但支持自定义广告的外观。
原生重叠式广告支持中介和视频广告。这是原生重叠式广告相对于原生广告的一项关键优势。
本指南介绍了如何在 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;
}
}
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-02。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-02。"],[[["\u003cp\u003eNative overlay ads are presented as an overlay on top of the application, similar to banner ads but with customizable appearances.\u003c/p\u003e\n"],["\u003cp\u003eThese ads support both mediation and video ads, offering a key advantage over traditional native ads.\u003c/p\u003e\n"],["\u003cp\u003eThis guide provides instructions on implementing native overlay ads in a Unity app, including loading, rendering, showing, hiding, and destroying the ads.\u003c/p\u003e\n"],["\u003cp\u003eBefore using real ads, it is crucial to test with test ads and configure your device as a test device during development.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can customize the appearance of the native overlay ad by using the \u003ccode\u003eNativeTemplateStyle\u003c/code\u003e and defining template IDs and styles for various elements.\u003c/p\u003e\n"]]],["Native overlay ads are implemented in Unity using the `NativeOverlayAd` class. First, use the `Load()` method with an ad unit ID, `AdRequest`, and `NativeAdOptions` to load an ad. Then, render the ad using `RenderTemplate()` with a `NativeTemplateStyle` to customize its appearance. Control visibility with `Show()` and `Hide()`, and release resources using `Destroy()`. Use test ad unit IDs during development and configure devices for testing.\n"],null,["Select platform: [Android](/admob/android/native \"View this page for the Android platform docs.\") [iOS](/admob/ios/native \"View this page for the iOS platform docs.\") [Flutter](/admob/flutter/native \"View this page for the Flutter platform docs.\") [Unity](/admob/unity/native-overlay \"View this page for the Unity platform docs.\")\n\n\u003cbr /\u003e\n\nGet started\n\nNative overlay ads are presented to users through UI components that are native\nto the platform. These ads are presented as an overlay on top of the\napplication. This is similar to how banner ads function, but with the ability to\ncustomize the appearance of the ads.\n\nNative overlay ads support mediation and video ads. This is a key advantage\nnative overlay ads have over [native ads](/admob/unity/native).\n\nThis guide shows you how to implement native overlay ads in a Unity app, as well\nas some important things to consider along the way.\n\nPrerequisites\n\n- Complete the [Get started guide](/admob/unity/quick-start).\n- Unity plugin 9.0.0 or higher.\n\nAlways test with test ads\n\nThe following sample code contains an ad unit ID which you can use to request\ntest ads. It's been specially configured to return test ads rather than\nproduction ads for every request, making it safe to use.\n\nHowever, after you've registered an app in the\nAdMob web interface and created your own ad unit\nIDs for use in your app, explicitly [configure your device as a test\ndevice](/admob/unity/test-ads#enable_test_devices) during\ndevelopment. \n\nAndroid\n\n`ca-app-pub-3940256099942544/2247696110`\n\niOS\n\n`ca-app-pub-3940256099942544/3986624511`\n\nLoad the native overlay ad\n\nLoading a native overlay ad is accomplished using the static `Load()` method on\nthe `NativeOverlayAd` class. The loaded `NativeOverlayAd` object is provided as\na parameter in the completion handler.\n\nThe following code uses `NativeOverlayAd` to load an ad: \n\n\n\n // These ad units are configured to always serve test ads.\n #if UNITY_ANDROID\n private string _adUnitId = \"ca-app-pub-3940256099942544/2247696110\";\n #elif UNITY_IPHONE\n private string _adUnitId = \"ca-app-pub-3940256099942544/3986624511\";\n #else\n private string _adUnitId = \"unused\";\n #endif\n\n\n private NativeOverlayAd _nativeOverlayAd;\n\n /// \u003csummary\u003e\n /// Loads the ad.\n /// \u003c/summary\u003e\n public void LoadAd()\n {\n // Clean up the old ad before loading a new one.\n if (_nativeOverlayAd != null)\n {\n DestroyAd();\n }\n\n Debug.Log(\"Loading native overlay ad.\");\n\n // Create a request used to load the ad.\n var adRequest = new AdRequest();\n\n // Optional: Define native ad options.\n var options = new NativeAdOptions\n {\n AdChoicesPosition = AdChoicesPlacement.TopRightCorner,\n MediaAspectRatio = NativeMediaAspectRatio.Any,\n };\n\n // Send the request to load the ad.\n NativeOverlayAd.Load(_adUnitId, adRequest, options,\n (NativeOverlayAd ad, LoadAdError error) =\u003e\n {\n if (error != null)\n {\n Debug.LogError(\"Native Overlay ad failed to load an ad \" +\n \" with error: \" + error);\n return;\n }\n\n // The ad should always be non-null if the error is null, but\n // double-check to avoid a crash.\n if (ad == null)\n {\n Debug.LogError(\"Unexpected error: Native Overlay ad load event \" +\n \" fired with null ad and null error.\");\n return;\n }\n\n // The operation completed successfully.\n Debug.Log(\"Native Overlay ad loaded with response : \" +\n ad.GetResponseInfo());\n _nativeOverlayAd = ad;\n\n // Register to ad events to extend functionality.\n RegisterEventHandlers(ad);\n });\n }\n\nRender and style the native overlay ad\n\nNative overlay ads are rendered using a `NativeTemplateStyle`. This class\ndefines fields that enable you to customize the ad's appearance.\n\nThe `TemplateID` is a required string which defines the native template used to\nrender the native overlay ad. Use the `NativeTemplateID` constant to choose an\nappropriate native template for your ad.\n\nThe following code renders the native overlay ad with a medium template and a\ncustom style. \n\n /// \u003csummary\u003e\n /// Renders the ad.\n /// \u003c/summary\u003e\n public void RenderAd()\n {\n if (_nativeOverlayAd != null)\n {\n Debug.Log(\"Rendering Native Overlay ad.\");\n\n // Define a native template style with a custom style.\n var style = new NativeTemplateStyle\n {\n TemplateID = NativeTemplateID.Medium,\n MainBackgroundColor = Color.red,\n CallToActionText = new NativeTemplateTextStyles\n {\n BackgroundColor = Color.green,\n FontColor = Color.white,\n FontSize = 9,\n Style = NativeTemplateFontStyle.Bold\n }\n };\n\n // Renders a native overlay ad at the default size\n // and anchored to the bottom of the screne.\n _nativeOverlayAd.RenderTemplate(style, AdPosition.Bottom);\n }\n }\n\nShow and hide the native overlay ad\n\nThe following code demonstrates how to show a loaded native overlay ad. \n\n /// \u003csummary\u003e\n /// Shows the ad.\n /// \u003c/summary\u003e\n public void ShowAd()\n {\n if (_nativeOverlayAd != null)\n {\n Debug.Log(\"Showing Native Overlay ad.\");\n _nativeOverlayAd.Show();\n }\n }\n\nHide the native overlay ad\n\nThe following code demonstrates how to hide a native overlay ad. \n\n /// \u003csummary\u003e\n /// Hides the ad.\n /// \u003c/summary\u003e\n public void HideAd()\n {\n if (_nativeOverlayAd != null)\n {\n Debug.Log(\"Hiding Native Overlay ad.\");\n _nativeOverlayAd.Hide();\n }\n }\n\nDestroy the native overlay ad\n\nWhen finished using the native overlay ad, be sure to call `Destroy()` to\nrelease resources. \n\n /// \u003csummary\u003e\n /// Destroys the native overlay ad.\n /// \u003c/summary\u003e\n public void DestroyAd()\n {\n if (_nativeOverlayAd != null)\n {\n Debug.Log(\"Destroying native overlay ad.\");\n _nativeOverlayAd.Destroy();\n _nativeOverlayAd = null;\n }\n }\n\nNext Steps\n\n- Learn more about native ads in our [native ads playbook](//admob.google.com/home/resources/native-ads-playbook/).\n- See [native ads policies and guidelines](https://support.google.com/admob/answer/6329638)."]]