广告
广告展示位置
横幅广告
在生成的 Flutter 新闻示例中,横幅广告以从静态新闻数据提供的区块的形式引入。静态新闻数据包含 BannerAdBlock
的实例,应用将其渲染为信息流和文章中的广告。
要将横幅广告引入您的应用,您可以执行以下操作之一
- 在客户端本地插入它们。
- 将它们插入到您的数据源提供的数据中。
有关其他提示、最佳实践以及不鼓励使用的横幅广告实现,请查看我们帮助中心的文章此处。
在本地插入横幅广告
要在本地插入横幅广告,请通过调整 ArticleBloc
和 FeedBloc
分别发出的状态,将具有所需大小的 BannerAdBlocks
添加到任何区块信息流中。
例如,要将横幅广告插入 category
信息流视图,请编辑 FeedBloc._onFeedRequested()
方法,以每 15 个区块插入一个 BannerAdBlock
,然后发出更新的信息流。
如果您希望横幅广告出现在信息流视图之外,请在小部件树中的所需位置使用 BannerAd
小部件构造函数和 BannerAdBlock
。
在数据源中插入横幅广告
将横幅广告插入到后端 API 提供的内容与本地插入相同,不同之处在于,开箱即用,您只能将 BannerAdBlock
插入到区块信息流中(例如 article
或 category
信息流)。要在服务器上插入横幅广告,请更改您的自定义数据源的行为。诸如 getFeed()
和 getArticle()
之类的方法应在您期望的位置将 BannerAdBlock
插入到从服务器返回的区块中。
请务必更新服务器返回的 totalBlocks
元数据,以反映提供给客户端的区块总数。这确保客户端正确渲染所有内容。
插页式广告
插页式广告是全屏广告,显示在内容之间。例如,打开每篇文章时会显示插页式广告。请遵循 Google 广告的建议,并调整插页式广告的频率,以获得更好的用户体验。此逻辑由 _ArticleViewState
的 initState
方法(lib/article/view/article_page.dart
)处理。要完全删除插页式广告,您可以删除以下行
context.read<FullScreenAdsBloc>().add(const ShowInterstitialAdRequested());
或者,您可以将该行移动到您希望的事件之后执行的位置(例如,在文章关闭时)。
有关其他提示,您可以查看我们帮助中心关于推荐的实现和广告指导(关于插页式广告)的文章。
粘性广告
粘性广告是可忽略的小型广告,固定在屏幕底部。粘性广告由 StickyAd
小部件构建。在模板中,ArticleContent
(lib/article/widgets/article_content.dart
) 中放置了一个粘性广告。移动 StickyAd()
构造函数以更改显示粘性广告的屏幕。
激励广告
激励广告允许用户观看广告以启用所需的操作。在模板中,未订阅的用户在查看四篇文章后有机会观看激励广告,这会解锁查看另一篇文章的能力。激励广告在 SubscribeWithArticleLimitModal
小部件 (lib/subscriptions/widgets/subscribe_with_article_limit_modal.dart
) 内构建。
当点击模态底部表上的“观看视频以查看此文章”按钮时,将运行以下行
context.read<FullScreenAdsBloc>().add(const ShowRewardedAdRequested())
移动该行以在应用内您期望的位置触发激励广告。请务必创建一个 HasWatchedRewardedAdListener
回调(类似于 lib/article/view/article_page.dart
中的回调),以便在用户观看激励广告后显示所需的内容。