@@ -18,8 +18,7 @@ import GoogleMobileAds
18
18
final class PrebidUniversalCreativeTestingGAMController :
19
19
NSObject ,
20
20
AdaptedController ,
21
- PrebidConfigurableBannerController ,
22
- GADBannerViewDelegate , WKNavigationDelegate {
21
+ PrebidConfigurableBannerController {
23
22
24
23
var refreshInterval : TimeInterval = 0
25
24
var prebidConfigId : String = " "
@@ -30,7 +29,15 @@ final class PrebidUniversalCreativeTestingGAMController:
30
29
31
30
private var gamBanner : GAMBannerView !
32
31
33
- private let configIdLabel = UILabel ( )
32
+ private let bannerViewDidReceiveAd = EventReportContainer ( )
33
+ private let bannerViewDidFailToReceiveAd = EventReportContainer ( )
34
+
35
+ private let configIdLabel : UILabel = {
36
+ let label = UILabel ( )
37
+ label. font = UIFont . systemFont ( ofSize: 12 )
38
+ return label
39
+ } ( )
40
+
34
41
private let reloadButton = ThreadCheckingButton ( )
35
42
36
43
init ( rootController: AdapterViewController ) {
@@ -44,18 +51,9 @@ final class PrebidUniversalCreativeTestingGAMController:
44
51
return PrebidBannerConfigurationController ( controller: self )
45
52
}
46
53
47
- private func setupAdapterController( ) {
48
- rootController. showButton. isHidden = true
49
-
50
- configIdLabel. isHidden = true
51
- rootController. actionsView. addArrangedSubview ( configIdLabel)
52
-
53
- reloadButton. addTarget ( self , action: #selector( reload) , for: . touchUpInside)
54
- }
55
-
56
54
func loadAd( ) {
57
55
configIdLabel. isHidden = false
58
- configIdLabel. text = " GAM AdUnit ID: \( gamAdUnitID) "
56
+ configIdLabel. text = " AdUnit ID: \( gamAdUnitID) "
59
57
60
58
gamBanner = GAMBannerView ( adSize: GADAdSizeFromCGSize ( adSize) )
61
59
gamBanner. adUnitID = gamAdUnitID
@@ -74,13 +72,66 @@ final class PrebidUniversalCreativeTestingGAMController:
74
72
gamBanner. load ( gamRequest)
75
73
}
76
74
75
+ private func setupAdapterController( ) {
76
+ rootController. showButton. isHidden = true
77
+
78
+ configIdLabel. isHidden = true
79
+ rootController. actionsView. addArrangedSubview ( configIdLabel)
80
+
81
+ reloadButton. addTarget ( self , action: #selector( reload) , for: . touchUpInside)
82
+
83
+ setupActions ( )
84
+ }
85
+
86
+ private func setupActions( ) {
87
+ rootController. setupAction ( bannerViewDidReceiveAd, " bannerViewDidReceiveAd called " , accessibilityLabel: " bannerViewDidReceiveAd called " )
88
+ rootController. setupAction ( bannerViewDidFailToReceiveAd, " bannerViewDidFailToReceiveAd called " )
89
+ rootController. setupAction ( reloadButton, " [Reload] " )
90
+ }
91
+
92
+ private func resetEvents( ) {
93
+ bannerViewDidReceiveAd. isEnabled = false
94
+ bannerViewDidFailToReceiveAd. isEnabled = false
95
+ reloadButton. isEnabled = true
96
+ }
97
+ }
98
+
99
+ // MARK: - GADBannerViewDelegate
100
+
101
+ extension PrebidUniversalCreativeTestingGAMController : GADBannerViewDelegate {
102
+
77
103
func bannerViewDidReceiveAd( _ bannerView: GADBannerView ) {
78
104
rootController. bannerView. backgroundColor = . clear
105
+ bannerViewDidReceiveAd. isEnabled = true
79
106
reloadButton. isEnabled = true
80
107
rootController. bannerView. constraints. first { $0. firstAttribute == . width } ? . constant = 300
81
- rootController. bannerView. constraints. first { $0. firstAttribute == . height } ? . constant = 500
108
+ rootController. bannerView. constraints. first { $0. firstAttribute == . height } ? . constant = 250
82
109
83
- // let targetWebView = bannerView.allSubViewsOf(type: WKWebView.self).first
84
- // targetWebView?.load(URLRequest(url: URL(string: "http://192.168.0.102:9876")!))
110
+ let targetWebView = bannerView. allSubViewsOf ( type: WKWebView . self) . first
111
+ targetWebView? . navigationDelegate = self
112
+ }
113
+
114
+ func bannerView( _ bannerView: GADBannerView , didFailToReceiveAdWithError error: any Error ) {
115
+ resetEvents ( )
116
+ bannerViewDidFailToReceiveAd. isEnabled = true
117
+ print ( error. localizedDescription)
118
+ }
119
+ }
120
+
121
+ // MARK: - WKNavigationDelegate
122
+
123
+ extension PrebidUniversalCreativeTestingGAMController : WKNavigationDelegate {
124
+
125
+ func webView(
126
+ _ webView: WKWebView ,
127
+ didReceive challenge: URLAuthenticationChallenge ,
128
+ completionHandler: @MainActor @escaping ( URLSession . AuthChallengeDisposition , URLCredential ? ) -> Void
129
+ ) {
130
+ if let serverTrust = challenge. protectionSpace. serverTrust {
131
+ let credential = URLCredential ( trust: serverTrust)
132
+ completionHandler ( . useCredential, credential)
133
+ } else {
134
+ print ( " Error: failed to get server trust. " )
135
+ }
85
136
}
86
137
}
0 commit comments