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