yandexads-flutter
108 строк · 3.2 Кб
1//
2// Created by Artem Kovardin on 09.03.2022.
3//
4
5import Foundation
6import YandexMobileAds
7import Flutter
8
9struct RewardedData {
10var loader: YMARewardedAdLoader? = nil
11var ad: YMARewardedAd? = nil
12}
13
14
15class YandexAdsRewardedComponent: NSObject, YandexAdsRewarded {
16
17private var rewardeds: [String: RewardedData] = [:]
18
19private var callbacks: FlutterYandexAdsRewarded
20
21init(callbacks: FlutterYandexAdsRewarded) {
22self.callbacks = callbacks
23}
24
25func make(id: String) throws {
26let loader = YMARewardedAdLoader()
27loader.delegate = self
28rewardeds[id] = RewardedData(loader: loader)
29
30}
31
32
33func load(id: String) {
34let configuration = YMAAdRequestConfiguration(adUnitID: id)
35rewardeds[id]?.loader?.loadAd(with: configuration)
36
37}
38
39func show(id: String) {
40if let controller = UIApplication.shared.delegate?.window??.rootViewController as? FlutterViewController {
41rewardeds[id]?.ad?.show(from: controller)
42}
43}
44}
45
46extension YandexAdsRewardedComponent: YMARewardedAdLoaderDelegate {
47
48func rewardedAdLoader(_ adLoader: YMARewardedAdLoader, didLoad rewardedAd: YMARewardedAd) {
49let id = rewardedAd.adInfo?.adUnitId ?? ""
50rewardeds[id]?.ad = rewardedAd
51rewardeds[id]?.ad?.delegate = self
52callbacks.onAdLoaded(id: id) {_ in }
53}
54
55func rewardedAdLoader(_ adLoader: YMARewardedAdLoader, didFailToLoadWithError error: YMAAdRequestError) {
56callbacks.onAdFailedToLoad(
57id: error.adUnitId ?? "",
58err: RewardedError(code: 0, description: error.error.localizedDescription),
59completion: {_ in }
60)
61}
62}
63
64
65extension YandexAdsRewardedComponent: YMARewardedAdDelegate {
66
67func interstitialAd(_ rewardedAd: YMARewardedAd, didFailToShowWithError error: Error) {
68let id = rewardedAd.adInfo?.adUnitId ?? ""
69callbacks.onAdFailedToShow(
70id: id,
71err: RewardedError(code: 0, description: error.localizedDescription),
72completion: {_ in }
73)
74}
75
76func interstitialAdDidShow(_ rewardedAd: YMARewardedAd) {
77let id = rewardedAd.adInfo?.adUnitId ?? ""
78callbacks.onAdShown(id: id) {_ in }
79}
80
81func interstitialAdDidDismiss(_ rewardedAd: YMARewardedAd) {
82let id = rewardedAd.adInfo?.adUnitId ?? ""
83callbacks.onAdDismissed(id: id) {_ in }
84}
85
86func interstitialAdDidClick(_ rewardedAd: YMARewardedAd) {
87let id = rewardedAd.adInfo?.adUnitId ?? ""
88callbacks.onAdClicked(id: id) {_ in }
89}
90
91func interstitialAd(_ rewardedAd: YMARewardedAd, didTrackRewardedWith impressionData: YMAImpressionData?) {
92let id = rewardedAd.adInfo?.adUnitId ?? ""
93callbacks.onImpression(
94id: id,
95data: RewardedImpression(data: impressionData?.rawData ?? ""),
96completion: {_ in }
97)
98}
99
100func rewardedAd(_ rewardedAd: YMARewardedAd, didReward reward: YMAReward) {
101let id = rewardedAd.adInfo?.adUnitId ?? ""
102callbacks.onRewarded(
103id: id,
104reward: RewardedEvent(amount: Int64(reward.amount), type: reward.type),
105completion: {_ in }
106)
107}
108}
109