Flutter 的横幅集成
使用 Unity LevelPlay SDK 在 Flutter 应用程序中实现横幅广告服务,支持各种广告大小和聚合网络。
阅读时间7 分钟最后更新于 2 天前
横幅是由系统启动的矩形广告服务,可以是静态广告,也可以是动画广告,并在实时 app 内容周围的指定区域提供。
先决条件
- 确保已将 LevelPlay Flutter 插件正确集成到 app 中。
- 确保使用 LevelPlay Initialization API 初始化 SDK。
- 在 LevelPlay 后台中找到 AdUnitID。
创建横幅广告对象并设置大小
在收到回调后创建横幅广告对象。
onInitSuccessfinal GlobalKey<LevelPlayBannerAdViewState> _bannerKey = GlobalKey<LevelPlayBannerAdViewState>();@overrideWidget 构建(BuildContext context) { return SizedBox( width: _adSize.width.toDouble(), height: _adSize.height.toDouble(), child:LevelPlayBannerAdView( key: _bannerKey, adUnitId: [YOUR_AD_UNIT_ID], adSize:[YOUR_AD_大小]、 listener:[YOUR_LISTENER]、 placementName: [YOUR_PLACEMENT], // optional onPlatformViewCreated:[YOUR_LOAD_BANNER_METHOD] // optional ), );}
横幅大小
LevelPlayAdSize | 描述 | Dimensions in dp(Width X Height) |
|---|---|---|
| BANNER | 标准横幅 | 320 x 50 |
| 大型 | 大型横幅 | 320 x 90 |
| 中矩形 | 中等矩形 (MREC) | 300 x 250 |
| 自适应 | 自动渲染广告服务以调整移动端和平板电脑的大小和方向 | 设备宽度 X 建议高度 |
要创建广告大小,请遵循以下选项之一:
-
适应屏幕宽度的自适应广告大小(推荐):此选项取代了“SMART”集成,因为它将根据设备类型返回横幅或 LEADERBOARD。支持自适应功能的网络(Google、Yandex)将根据其优化逻辑返回高度。LevelPlayAdSize adSize = await LevelPlayAdSize.createAdaptiveAdSize();
-
使用固定宽度广告大小的自适应广告大小:此选项允许您设置指定的宽度。支持自适应横幅功能的网络(Google、Yandex)将根据提供的宽度根据其优化逻辑返回高度。所有其他网络将根据提供的宽度返回回退大小(横幅或 LEADERBOARD)。LevelPlayAdSize adSize = await LevelPlayAdSize.createAdaptiveAdSize(width: 400);
-
指定的横幅大小:此选项允许您专门设置横幅大小:横幅、大横幅、中等横幅。LevelPlayAdSize adSize = LevelPlayAdSize.MEDIUM_RECTANGLE;
广告位
Unity 支持仅用于举报的广告横幅中的广告位。在之前设置广告位以影响所有重新加载的广告服务。
loadAd设置横幅监听器
在代码中实现 LevelPlayBannerAdViewListener 以获取广告投放信息。
- 建议的最佳做法是在加载横幅广告之前设置监听器。
- 每个横幅广告必须有自己的监听器实现。
- 回调在主线程上运行。
/** 加载横幅后调用。 @param adInfo 广告的信息。 */ @overridevoid onAdLoaded(LevelPlayAdInfo adInfo) {}/** 横幅广告加载失败后调用。 @param 报错 报错的相关信息。 */ @overridevoid onAdLoadFailed(LevelPlayAdError error) {}/** 通知屏幕已显示。 @param adInfo 广告的信息。 */ @overridevoid onAdDisplayed(LevelPlayAdInfo adInfo) {}/** 通知屏幕无法显示。 @param adInfo 广告的信息。 @param 报错 报错的相关信息。 */ @overridevoid onAdDisplayFailed(LevelPlayAdInfo adInfo, LevelPlayAdError error) {}/** 当用户单击横幅广告时调用。 @param adInfo 广告的信息。 */ @overridevoid onAdClicked(LevelPlayAdInfo adInfo) {}/** 广告以全屏方式打开。 @param adInfo 广告的信息。 */ @overridevoid onAdExpanded(LevelPlayAdInfo adInfo) {}/** 广告将恢复为其原始大小。 @param adInfo 广告的信息。 */ @overridevoid onAdCollapsed(LevelPlayAdInfo adInfo) {}/** 用户按下广告后被导航出 app。 @param adInfo 广告的信息。 */ @overridevoid onAdLeftApplication(LevelPlayAdInfo adInfo) {}
加载横幅广告
要加载横幅广告,请使用 loadAd。
// Load the banner ad _bannerKey.currentState?.loadAd();
您可以在时(即横幅视图容器完全创建时)或在您选择的其他时间调用 loadAd。
onPlatformViewCreated is called暂停和恢复横幅刷新
如果在平台中定义了刷新值,则可以在代码中暂停横幅刷新。使用以下方法可停止横幅广告的自动刷新,或在暂停后重新启用。
- :暂停横幅广告的自动刷新。
pauseAutoRefresh - :暂停横幅广告后恢复自动刷新。
resumeAutoRefresh
// Pause refresh _bannerKey.currentState?.pauseAutoRefresh(); // Resume refresh _bannerKey.currentState?.resumeAutoRefresh();
销毁横幅广告
要销毁横幅,请调用 方法。
destroy已销毁的横幅无法再次显示。要显示更多广告服务,请创建一个新的对象。
LevelPlayBannerAdView_bannerKey.currentState?.destroy();
横幅广告服务的完整实现示例
以下是使用标准横幅大小创建和加载横幅广告的示例。
// Start of the widget... final _bannerKey = GlobalKey<LevelPlayBannerAdViewState>(); final adSize = LevelPlayAdSize.BANNER; @override Widget 构建(BuildContext context) { return SizedBox( width:adSize.width.toDouble(), // 获取实际横幅布局宽度大小 height:adSize.height.toDouble(), // 获取实际横幅布局高度大小 child:LevelPlayBannerAdView( key: _bannerKey, adUnitId:'YOUR_AD_UNIT_ID', adSize:adSize、 监听器:此, placementName: 'YOUR_PLACEMENT', onPlatformViewCreated: () { // In this implementation we call loadAd on the key, // it is also possible to store the LevelPlayBannerAdView widget // in a variable and call loadAd on it as described above in the docs. _bannerKey.currentState?.loadAd(); }, ), ); } @override void onAdClicked(LevelPlayAdInfo adInfo) { // Implement your logic here... } @override void onAdCollapsed(LevelPlayAdInfo adInfo) { // Implement your logic here... } @override void onAdDisplayFailed(LevelPlayAdInfo adInfo, LevelPlayAdError error) { // Implement your logic here... } @override void onAdDisplayed(LevelPlayAdInfo adInfo) { // Implement your logic here... } @override void onAdExpanded(LevelPlayAdInfo adInfo) { // Implement your logic here... } @override void onAdLeftApplication(LevelPlayAdInfo adInfo) { // Implement your logic here... } @override void onAdLoadFailed(LevelPlayAdError error) { // Implement your logic here... } @override void onAdLoaded(LevelPlayAdInfo adInfo) { // Implement your logic here... } // End of widget...
LevelPlay Mediation 演示应用程序
Integration Demo 应用程序演示如何在 app 中集成横幅广告单元 API。
验证与 Integration Test Suite 的集成。
后续步骤
请遵循 Flutter 集成指南来集成其他插页式广告网络或配置其他广告格式: