插屏广告

插屏广告是一种全屏广告格式,嵌入在应用内容中,在自然暂停时显示,例如在游戏关卡之间过渡或完成目标操作时。

当应用渲染插屏广告时,用户有两个选择:点击广告并前往广告主网站或关闭广告并返回应用。

在插屏广告中,用户注意力会完全集中在广告上,因此展示成本较高。

外观

本指南展示了如何将插屏广告集成到 Compose Multiplatform 应用中。 除了代码示例和说明之外,它还包含特定格式的建议和其他资源的链接。

前提条件

  1. 按照快速入门中的流程集成 Yandex Mobile Ads Compose Multiplatform 插件。
  2. 确保您运行的是最新的 Yandex Mobile Ads Compose Multiplatform 插件版本。 如果您使用聚合,请确保运行最新版本的统一构建

实施

集成插屏广告的关键步骤:

  1. 使用 rememberInterstitialAdLoader() 创建广告加载器。
  2. 通过挂起函数 loadAd() 加载广告。
  3. 在调用 show() 之前,可选择为已加载的广告设置 InterstitialAdEventListener
  4. 使用 show() 展示广告。

插屏广告集成的特点

如果加载通过错误处理抛出或报告故障,请不要立即尝试再次加载新广告。 如果没有其他选项,请限制广告加载重试次数。 这将有助于避免出现限制时持续出现不成功的请求和连接问题。

加载广告

使用 rememberInterstitialAdLoader() 创建加载器,然后调用 loadAd,并传入 AdRequest,其中包含来自 Yandex Advertising Network 界面的 adUnitId。 在加载失败时,loadAd 会从 com.yandex.mobile.ads.kmp.common 中抛出 AdLoadException

您可以通过 AdRequest 扩展请求(targetingparameterspreferredTheme 等)。 在请求中提供额外的上下文数据可以显著提高您的广告质量。 详情请参阅广告定位部分。

以下示例展示了如何加载插屏广告:

@Composable
fun InterstitialBlock(adUnitId: String) {
    val loader = rememberInterstitialAdLoader()
    val scope = rememberCoroutineScope()
    var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
    var isLoading by remember { mutableStateOf(false) }

    Button(
        onClick = {
            isLoading = true
            scope.launch {
                try {
                    interstitialAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
                } catch (e: AdLoadException) {
                    // 加载错误:e.error (AdRequestError)。 不建议无限制重试。
                }
                isLoading = false
            }
        },
        enabled = !isLoading,
    ) {
        Text(if (isLoading) "Loading..." else "Load interstitial")
    }

    Button(
        onClick = { interstitialAd?.show() },
        enabled = interstitialAd != null,
    ) {
        Text("Show interstitial")
    }
}

为了进行调试,您可以使用 'demo-interstitial-yandex' 作为 adUnitId

广告渲染

插屏广告应在应用运行的自然暂停期间展示 — 例如,在游戏关卡之间或转化完成后(当文件下载完成时)。

为跟踪插屏广告生命周期,请先为 InterstitialAd 实例设置 InterstitialAdEventListener,然后再调用 show()

val ad = interstitialAd ?: return
ad.setAdEventListener(
    object : InterstitialAdEventListener {
        override fun onAdShown() {
            // 广告展示时调用。
        }

        override fun onAdFailedToShow(adError: AdError) {
            // 广告无法展示时调用。 清除引用并根据需要预加载下一个广告。
        }

        override fun onAdDismissed() {
            // 广告关闭时调用。 在适当情况下,请在此预加载下一个插屏广告。
        }

        override fun onAdClicked() {
            // 记录广告点击时调用。
        }

        override fun onAdImpression(impressionData: ImpressionData?) {
            // 记录广告展示时调用。
        }
    },
)
ad.show()

释放资源

onAdDismissedonAdFailedToShow 之后,删除对广告对象的引用,并在需要时开始加载下一个创意。 不要保持对已展示广告的强引用。

测试插屏广告集成

使用演示广告单元进行广告测试

使用测试广告来检查您的插播广告集成和应用本身。为了确保每次广告请求都能返回测试广告,您可以使用一个特殊的演示广告版位 ID。

演示广告单元 ID:demo-interstitial-yandex

重要

在应用商店发布应用前,请务必将演示广告版位 ID 替换为您在 Yandex Advertising Network 接口中获取的真实 ID。

有关所有可用演示广告版位 ID 的列表,请参阅用于测试的演示广告单元

测试广告集成

您可以使用 SDK 的内置分析工具检查插播广告是否已正确集成。日志中将显示包含测试结果的详细报告。

要查看报告,请在 Android 应用调试工具 Logcat 中搜索关键词“YandexAds”。

adb logcat -v brief '*:S YandexAds'

如果集成成功,将返回以下消息:

adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type interstitial was integrated successfully

如果存在任何插播广告集成问题,您将收到详细的问题报告和故障排除建议。

使用演示广告单元进行广告测试

我们建议使用测试广告来测试您的广告集成和应用本身。

为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。

演示广告单元 ID:demo-interstitial-yandex

重要

在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。

您可以在 用于测试的演示广告单元 部分找到可用的演示广告版位 ID 列表。

测试广告集成

您可以使用本机控制台工具测试广告集成。

要查看详细日志,请调用 YMAMobileAds 类的 enableLogging 方法。

YMAMobileAds.enableLogging()

要查看 SDK 日志,请前往控制台工具并设置 Subsystem = com.mobile.ads.ads.sdk。您还可以按类别和错误级别过滤日志。

如果您在集成广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。

提示

广告预加载

加载广告可能需要几秒钟的时间,具体取决于移动聚合中对接的广告网络数量和用户的互联网速度。我们建议在展示广告之前预加载广告。

提前调用 LoadAd,以在适当的时刻展示加载的广告。

要在投放当前广告后立即开始加载下一个广告,请将此进程绑定到 onAdDismissed 事件。

如果您在太多不太可能显示的屏幕上缓存广告,您的广告效果可能会下降。例如,如果用户每次会话完成 2-3 个游戏关卡,则您不应缓存 6-7 个屏幕的广告。否则,您的广告可见性可能会降低,并且广告系统可能会降低您的应用的优先级。

为确保您为应用程序找到良好的平衡,请在 Yandex Advertising Network 界面中跟踪“收视数比例”或“可见收视数比例”指标。如果它低于 20%,可能需要修改您的缓存算法。收视数比例越高越好。

其他资源