激励广告

激励广告是一种受欢迎的全屏广告格式,用户观看广告后会获得奖励。

这种广告类型的显示由用户激活,例如,为了在游戏中获得奖励或额外生命。

高度的用户积极性使得这种广告格式成为免费应用中最受欢迎和最具盈利性的广告格式。

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

前提条件

  1. 请按照 快速入门 中描述的 SDK 集成步骤进行操作。
  2. 提前 初始化 您的广告 SDK。
  3. 确保您运行的是最新的 Yandex Mobile Ads SDK 版本。如果您使用聚合,请同时确保您运行的是最新版本的 统一构建

实施

集成激励广告的关键步骤:

  • 创建并配置 RewardedAdLoader 广告加载器。
  • 设置委托并实施所需的 AdRewardedAdLoaderDelegate 方法。
  • 加载广告。
  • 如果需要,请设置广告对象的委托并实施所需的 AdRewardedAdDelegate 方法。
  • 呈现广告。
  • 奖励观看广告的用户。

激励广告集成的特点

  1. 所有调用 Yandex Mobile Ads SDK 方法的操作必须在主线程中完成。

  2. 我们强烈建议您不要在 func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) 方法中收到错误时尝试加载新广告。如果您需要从 func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) 加载广告,请限制广告加载重试,以避免由于网络连接限制而重复出现失败的广告请求。

  3. 我们建议您在与广告交互的屏幕的整个生命周期内保持对广告及其加载器的强引用。

加载广告

要加载激励广告,请创建 RewardedAdLoader 类的实例。

要在广告加载成功或失败时发出通知,请设置 RewardedAdLoader 类的委托属性并实施 RewardedAdLoaderDelegate 委托。

final class RewardedViewController: UIViewController {
    private lazy var rewardedAdLoader: RewardedAdLoader = {
        let loader = RewardedAdLoader()
        loader.delegate = self
        return loader
    }()
}

extension RewardedViewController: RewardedAdLoaderDelegate {
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) {
        // 加载成功后将调用该方法
    }

    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) {
        // 加载广告时出现任何错误后将调用此方法
    }
}

要加载广告,您需要来自 Partner Interface (adUnitId) 的广告单元 ID。

您可以通过 AdRequest 传递用户兴趣、上下文页面数据、位置详细信息或其他信息来扩展广告请求参数。在请求中提供额外的上下文数据可以显著提高您的广告质量。请参阅广告定位版块了解更多信息。

以下示例展示了如何从视图控制器加载激励广告。

final class RewardedViewController: UIViewController {
    private lazy var rewardedAdLoader: RewardedAdLoader = {
        let loader = RewardedAdLoader()
        loader.delegate = self
        return loader
    }()

    func loadAd() {
        let configuration = AdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
        rewardedAdLoader.loadAd(with: configuration)
    }
}

广告呈现

激励广告是一种基于激励的广告格式,允许用户因观看广告而获得奖励。奖励可能是额外的生命或在游戏中晋级到下一个级别。激励广告是在应用级别确定的。

激励广告加载成功后,将调用 RewardedAdDelegate 委托的 func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) 方法。使用此方法来显示激励广告。

final class RewardedViewController: UIViewController {
    private var rewardedAd: RewardedAd?

    func showAd() {
        rewardedAd?.show(from: self)
    }
}

extension RewardedViewController: RewardedAdLoaderDelegate {
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) {
        self.rewardedAd = rewardedAd
        self.rewardedAd.delegate = self

        showAd()
    }
}

奖励发放

计算的展示次数会触发 RewardedAdDelegate 委托的 rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) 方法。使用此方法来奖励应用用户。

final class RewardedViewController: UIViewController {
    private var rewardedAd: RewardedAd?
}

extension RewardedViewController: RewardedAdDelegate {
    func rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) {
        sendReward(reward)
    }
}

测试激励广告集成

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

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

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

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

重要

在将您的应用发布到商店之前,请确保将演示广告单元 ID 替换为从 Partner Interface 获取的真实 ID。

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

测试广告集成

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

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

YMAMobileAds.enableLogging()

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

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

其他资源