Реклама с вознаграждением

Реклама с вознаграждением (Rewarded) — это полноэкранный рекламный формат, за просмотр которого пользователь получает бонус или награду (например: внутриигровые монеты, доступ к премиум-функциям, повтор попытки и т. д.).

Примечание

Пользователь принимает решение самостоятельно — не смотреть рекламу или дождаться получения награды.

Примечание

Пример работы всех типов форматов есть в демопроекте.

Пример создания рекламы с вознаграждением

import UIKit
import YandexMobileAds

class RewardedViewController: UIViewController {
    private let adUnitID = "ad-unit-ID" // Use R-M-XXXXXX-Y or "demo-rewarded-yandex" (look for the description below)
    
    private var rewardedAd: RewardedAd?
    
    private lazy var rewardedAdLoader: RewardedAdLoader = {
        let loader = RewardedAdLoader()
        loader.delegate = self
        return loader
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        loadAd()
    }
    
    private func loadAd() {
        print("[Rewarded] Loading ad...")
        let configuration = AdRequestConfiguration(adUnitID: adUnitID)
        rewardedAdLoader.loadAd(with: configuration)
    }
    
    private func showAd() {
        guard let ad = rewardedAd else { 
            print("[Rewarded] Ad is not loaded yet")
            return 
        }
        ad.show(from: self)
    }
}

// MARK: - RewardedAdLoaderDelegate 

extension RewardedViewController: RewardedAdLoaderDelegate {
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) {
        print("[Rewarded] didLoad")
        self.rewardedAd = rewardedAd
        self.rewardedAd?.delegate = self
        
      //  showAd() укажите отображение креатива в месте приложения, где это необходимо
    }
    
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) {
        print("[Rewarded] didFailToLoad: \(error.error)")
    }
}

// MARK: - RewardedAdDelegate

extension RewardedViewController: RewardedAdDelegate {
    func rewardedAdDidShow(_ rewardedAd: RewardedAd) {
        print("[Rewarded] didShow")
    }
    
    func rewardedAdDidDismiss(_ rewardedAd: RewardedAd) {
        print("[Rewarded] didDismiss")
    }
    
    func rewardedAdDidClick(_ rewardedAd: RewardedAd) {
        print("[Rewarded] didClick")
    }
    
    func rewardedAd(_ rewardedAd: RewardedAd, didFailToShowWithError error: Error) {
        print("[Rewarded] didFailToShow: \(error)")
    }
    
    func rewardedAd(_ rewardedAd: RewardedAd, didTrackImpressionWith impressionData: ImpressionData?) {
        print("[Rewarded] didTrackImpression: \(impressionData?.rawData ?? "nil")")
    }
    
    func rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) {
        print("[Rewarded] didReward: \(reward.amount) \(reward.type)")
    }
}