Skip to content

Commit 4a29828

Browse files
feat: tune GAM case
1 parent 9a19411 commit 4a29828

File tree

5 files changed

+95
-31
lines changed

5 files changed

+95
-31
lines changed

InternalTestApp/PrebidMobileDemoRendering/Model/TestCasesManager.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ struct TestCaseManager {
480480

481481
let bannerController = PrebidUniversalCreativeTestingGAMController(rootController: adapterVC)
482482
bannerController.adSize = CGSize(width: 300, height: 250)
483-
bannerController.gamAdUnitID = "/21808260008/prebid_puc_testing"
483+
bannerController.gamAdUnitID = "/21808260008/puc-testing-secure-banner-300x250"
484484

485485
adapterVC.setup(adapter: bannerController)
486486
setupCustomParams(for: bannerController.prebidConfigId)

InternalTestApp/PrebidMobileDemoRendering/Resources/Base.lproj/Main.storyboard

+2-2
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,8 @@
408408
<wkPreferences key="preferences"/>
409409
</wkWebViewConfiguration>
410410
</wkWebView>
411-
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="IP address(f.e. 192.168.0.108:9876)" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zgi-DY-0kd">
412-
<rect key="frame" x="62.5" y="35" width="250.5" height="18"/>
411+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Scheme, IP, port(f.e. http://192.168.0.108:9876)" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zgi-DY-0kd">
412+
<rect key="frame" x="20.5" y="35" width="334" height="18"/>
413413
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
414414
<nil key="textColor"/>
415415
<nil key="highlightedColor"/>

InternalTestApp/PrebidMobileDemoRendering/Resources/Info.plist

-11
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,6 @@
3939
<true/>
4040
<key>NSAllowsArbitraryLoads</key>
4141
<true/>
42-
<key>NSAppTransportSecurity</key>
43-
<dict>
44-
<key>NSExceptionDomains</key>
45-
<dict>
46-
<key>192.168.0.102</key>
47-
<dict>
48-
<key>NSExceptionAllowsInsecureHTTPLoads</key>
49-
<true/>
50-
</dict>
51-
</dict>
52-
</dict>
5342
</dict>
5443
<key>NSLocationAlwaysUsageDescription</key>
5544
<string>Access to GPS is needed for testing purposes.</string>

InternalTestApp/PrebidMobileDemoRendering/ViewControllers/Adapters/Prebid/OriginalAPI/PrebidUniversalCreativeTestingGAMController.swift

+67-16
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ import GoogleMobileAds
1818
final class PrebidUniversalCreativeTestingGAMController:
1919
NSObject,
2020
AdaptedController,
21-
PrebidConfigurableBannerController,
22-
GADBannerViewDelegate, WKNavigationDelegate {
21+
PrebidConfigurableBannerController {
2322

2423
var refreshInterval: TimeInterval = 0
2524
var prebidConfigId: String = ""
@@ -30,7 +29,15 @@ final class PrebidUniversalCreativeTestingGAMController:
3029

3130
private var gamBanner: GAMBannerView!
3231

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+
3441
private let reloadButton = ThreadCheckingButton()
3542

3643
init(rootController: AdapterViewController) {
@@ -44,18 +51,9 @@ final class PrebidUniversalCreativeTestingGAMController:
4451
return PrebidBannerConfigurationController(controller: self)
4552
}
4653

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-
5654
func loadAd() {
5755
configIdLabel.isHidden = false
58-
configIdLabel.text = "GAM AdUnit ID: \(gamAdUnitID)"
56+
configIdLabel.text = "AdUnit ID: \(gamAdUnitID)"
5957

6058
gamBanner = GAMBannerView(adSize: GADAdSizeFromCGSize(adSize))
6159
gamBanner.adUnitID = gamAdUnitID
@@ -74,13 +72,66 @@ final class PrebidUniversalCreativeTestingGAMController:
7472
gamBanner.load(gamRequest)
7573
}
7674

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+
77103
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
78104
rootController.bannerView.backgroundColor = .clear
105+
bannerViewDidReceiveAd.isEnabled = true
79106
reloadButton.isEnabled = true
80107
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
82109

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+
}
85136
}
86137
}

InternalTestApp/PrebidMobileDemoRendering/ViewControllers/Adapters/Prebid/OriginalAPI/PrebidUniversalCreativeTestingWebViewController.swift

+25-1
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,36 @@ final class PrebidUniversalCreativeTestingWebViewController: UIViewController {
2121
@IBOutlet weak var webView: WKWebView!
2222
@IBOutlet weak var textField: UITextField!
2323

24+
override func viewDidLoad() {
25+
super.viewDidLoad()
26+
27+
webView.navigationDelegate = self
28+
}
29+
2430
@IBAction func onOpenURLPressed(_ sender: Any) {
25-
guard let urlString = textField.text, let url = URL(string: "http://\(urlString)") else {
31+
guard let urlString = textField.text, let url = URL(string: "\(urlString)") else {
2632
return
2733
}
2834

2935
let request = URLRequest(url: url)
3036
webView.load(request)
3137
}
3238
}
39+
40+
// MARK: - WKNavigationDelegate
41+
42+
extension PrebidUniversalCreativeTestingWebViewController: WKNavigationDelegate {
43+
44+
func webView(
45+
_ webView: WKWebView,
46+
didReceive challenge: URLAuthenticationChallenge,
47+
completionHandler: @MainActor @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
48+
) {
49+
if let serverTrust = challenge.protectionSpace.serverTrust {
50+
let credential = URLCredential(trust: serverTrust)
51+
completionHandler(.useCredential, credential)
52+
} else {
53+
print("Error: failed to get server trust.")
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)