开屏广告
开屏广告是一种特殊的广告形式,通过应用程序的初始屏幕盈利。用户可随时关闭这些广告,其设计是用户在前台开启应用程序时展示广告,而无论是在启动时还是从后台返回时。
本指南介绍了在打开 iOS 应用时显示广告的集成过程。除了代码示例和说明之外,它还包含特定格式的建议和其他资源的链接。
限制
开屏广告只能投放在垂直方向的应用程序中。对于水平方向,不会选择这种广告。
布局
开屏广告包含 Go to the app 按钮,以便用户知道他们正在使用您的应用并可以关闭广告。以下是广告的示例:
前提条件
- 请按照 快速入门 中描述的 SDK 集成步骤进行操作。
- 提前 初始化 您的广告 SDK。
- 确保您运行的是最新的 Yandex Mobile Ads SDK 版本。如果您使用聚合,请同时确保您运行的是最新版本的 统一构建。
术语和定义
- 冷启动 是指启动一个不在 RAM 中的应用,创建一个新的应用会话。
- 热启动 是指当应用在 RAM 中暂停时,将应用从后台模式切换到前台模式。
实施
- 在应用启动时初始化 SDK。
- 创建并设置
AppOpenAdLoader
广告加载器对象。 - 设置
AppOpenAdLoaderDelegate
回调方法委托,以在广告加载成功或失败时发出通知。 - 使用
loadAd(with: AdRequestConfiguration)
方法加载广告。 - 使用 AppDelegate 类方法
applicationDidBecomeActive(_ application: UIApplication)
在应用打开时呈现广告。 - 在呈现广告之前,设置
AppOpenAdDelegate
广告回调方法委托。 - 使用
show
方法呈现广告。
主要步骤
-
在应用启动时初始化 SDK。
// 等待 sdk 初始化后再加载广告 MobileAds.initializeSDK(completionHandler: completionHandler)
-
创建并设置
AppOpenAdLoader
广告加载器对象。您将需要来自 Partner Interface (
AD_UNIT_ID
) 的广告单元 ID 。您可以通过
AdRequestConfiguration
传递用户兴趣、上下文页面数据、位置详细信息或其他信息来扩展广告请求参数。在请求中提供额外的上下文数据可以显著提高您的广告质量。请参阅广告定位版块了解更多信息。private lazy var appOpenAdLoader: AppOpenAdLoader = { let loader = AppOpenAdLoader() loader.delegate = self return loader }()
-
设置
AppOpenAdLoaderDelegate
回调方法委托,以在广告加载成功或失败时发出通知。extension AppOpenAdController: AppOpenAdLoaderDelegate { func appOpenAdLoader(_ adLoader: AppOpenAdLoader, didLoad appOpenAd: AppOpenAd) { // 广告加载成功。您现在可以展示广告。 self.appOpenAd = appOpenAd self.appOpenAd?.delegate = self } func appOpenAdLoader(_ adLoader: AppOpenAdLoader, didFailToLoadWithError error: AdRequestError) { // 广告加载失败,出现 AdRequestError。 // 强烈建议不要尝试通过 onAdFailedToLoad() 方法加载新广告。 } }
-
使用
loadAd(with: AdRequestConfiguration)
方法加载广告。func loadAd() { // 将 demo-appopenad-yandex 替换为实际的广告单元 ID let configuration = AdRequestConfiguration(adUnitID: "demo-appopenad-yandex") self.appOpenAdLoader.loadAd(with: configuration) }
-
使用 AppDelegate 类的方法在打开应用时显示广告。
func applicationDidBecomeActive(_ application: UIApplication)
-
在呈现广告之前,设置
AppOpenAdDelegate
广告回调方法委托。extension AppOpenAdController: AppOpenAdDelegate { func appOpenAd(_ appOpenAd: AppOpenAd, didFailToShowWithError error: Error) { // 广告展示失败时调用。 // 因错误而无法展示后加载下一个广告 loadAd() } func appOpenAdDidShow(_ appOpenAd: AppOpenAd) { // 广告展示时调用。 } func appOpenAdDidDismiss(_ appOpenAd: AppOpenAd) { // 广告关闭时调用。 // 关闭后加载下一个广告 loadAd() } func appOpenAdDidClick(_ appOpenAd: AppOpenAd) { // 记录广告点击时调用。 } func appOpenAd(_ appOpenAd: AppOpenAd, didTrackImpressionWith impressionData: ImpressionData?) { // 记录广告展示次数时调用。 } }
-
使用
show
方法呈现广告。self.appOpenAd?.show(from: self)
开屏广告集成的特点
- 所有调用 Yandex Mobile Ads SDK 方法的操作必须在主线程中完成。
- 加载可能需要一段时间,因此如果广告尚未加载,请勿增加冷启动时间。
- 预加载广告以便后续在热启动期间显示。
- 我们不建议您在应用启动期间同时加载开屏广告和其他广告格式,因为此时应用可能正在下载运营数据。这可能会使设备和互联网连接超载,从而导致广告加载时间变长。
- 如果您在
appOpenAdLoader(_ adLoader: AppOpenAdLoader, didFailToLoadWithError error: AdRequestError)
回调中接收到错误,请不要尝试加载新广告。如果必须这样做,请限制广告重新加载尝试的次数。这将有助于避免出现限制时持续出现不成功的请求和连接问题。
在发布时测试广告集成
使用演示广告单元进行广告测试
我们建议使用测试广告来测试开屏广告集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-appopenad-yandex
。
重要
在商店中发布您的应用之前,请确保将演示广告版位 ID 替换为从 Partner Interface 获取的真实广告版位 ID。
您可以在 用于测试的演示广告单元 版块找到可用的演示广告版位 ID 列表。
测试广告集成
您可以使用本机控制台工具测试广告集成。
要查看详细日志,请调用 YMAMobileAds
类的 enableLogging
方法。
YMAMobileAds.enableLogging()
要查看 SDK 日志,请前往控制台工具并设置 sybsystem = com.yandex.mobile.ads.sdk
。您还可以按类别和错误级别过滤日志。
如果您在集成广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。
建议
-
不要在启动屏幕之前呈现开屏广告。
通过显示启动屏幕,您可以增强用户的应用体验,使其更加流畅,令用户愉悦。这将避免用户感到惊讶或困惑,并确保他们打开了正确的应用。在同一屏幕上,您可以提醒用户即将展示的广告。使用加载指示器或简单的文本信息告知用户他们将在广告结束后继续查看应用内容。
-
如果请求和呈现广告之间存在延迟,用户可能会短暂打开您的应用,然后意外地看到与内容无关的广告。这会对用户体验产生负面影响,因此需要避免。一种解决方案是在显示主应用内容之前使用启动屏幕,并从该屏幕开始广告呈现。如果应用在启动屏幕后打开一些内容,则最好不要呈现广告。
-
等到新用户打开应用并使用几次后,再呈现开屏广告。仅向应用中满足特定条件的用户呈现广告(例如,通过了特定级别、打开了特定次数的应用或未参与奖励优惠)。不要在用户安装应用后立即呈现广告。
-
根据应用用户行为调节广告呈现频率。不要在每次冷/热应用启动时呈现广告。
-
仅当应用在后台运行一段时间(例如 30 秒、2 分钟、15 分钟)时才呈现广告。
-
确保运行了彻底的测试,因为每款应用都是独特的,并且需要特殊的方法来最大限度地提高收入,而不降低用户留存率或减少花费在应用上的时间。用户行为和参与度可能会随着时间的推移而发生变化,因此我们建议定期测试您用于开屏广告的策略。
其他资源
-
GitHub 链接。