Skip to content

Commit

Permalink
move NimbusAd creation to TestRenderViewController for easier manipul…
Browse files Browse the repository at this point in the history
…ation. Allow to send use_new_renderer field (#113)
  • Loading branch information
standa-dev authored Aug 2, 2024
1 parent 3ccc3a5 commit d1d2d31
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 56 deletions.
60 changes: 7 additions & 53 deletions Application/Sources/Test/TestRenderAdViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,25 @@ import UIKit
import NimbusKit

final class TestRenderAdViewController: UIViewController {
private let adMarkup: String
private let iTunesAppId: String?
private let ad: NimbusAd

private lazy var adContainerView: CustomAdContainerView = {
return CustomAdContainerView(ad: Self.getAdFromMarkup(adMarkup: adMarkup), viewController: self)
return CustomAdContainerView(ad: ad, viewController: self)
}()

init(adMarkup: String, iTunesAppId: String?) {
self.adMarkup = adMarkup
self.iTunesAppId = iTunesAppId

init(ad: NimbusAd) {
self.ad = ad
super.init(nibName: nil, bundle: nil)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

static func showBlocking(from: UIViewController, adMarkup: String, iTunesAppId: String? = nil) {
static func showBlocking(from: UIViewController, ad: NimbusAd) {
let adView = NimbusAdView(adPresentingViewController: from)
adView.showsSKOverlay = iTunesAppId != nil
let controller = NimbusAdViewController(adView: adView, ad: getAdFromMarkup(adMarkup: adMarkup, iTunesAppId: iTunesAppId), companionAd: nil)
adView.showsSKOverlay = ad.extensions?.skAdNetwork != nil
let controller = NimbusAdViewController(adView: adView, ad: ad, companionAd: nil)
controller.modalPresentationStyle = .fullScreen

adView.adPresentingViewController = controller
Expand Down Expand Up @@ -62,47 +59,4 @@ final class TestRenderAdViewController: UIViewController {
child.fill()
}
}

static private func getAdFromMarkup(adMarkup: String, iTunesAppId: String? = nil) -> NimbusAd {
let type: NimbusAuctionType = isVideoMarkup(adMarkup: adMarkup) ? .video : .static
return createNimbusAd(auctionType: type, markup: adMarkup, iTunesAppId: iTunesAppId)
}

static private func isVideoMarkup(adMarkup: String) -> Bool {
let prefix = adMarkup.prefix(5).lowercased()
return prefix == "<vast" || prefix == "<?xml"
}

static private func createNimbusAd(
placementId: String? = nil,
auctionType: NimbusAuctionType,
markup: String,
isMraid: Bool = true,
isInterstitial: Bool = true,
iTunesAppId: String? = nil
) -> NimbusAd {
let adDimensions = isInterstitial ?
NimbusAdDimensions(width: 320, height: 480) :
NimbusAdDimensions(width: 300, height: 50)

let ext = NimbusAdExtensions(skAdNetwork: NimbusAdSkAdNetwork(advertisedAppStoreItemID: iTunesAppId))

return NimbusAd(
position: "",
auctionType: auctionType,
bidRaw: 0,
bidInCents: 0,
contentType: "",
auctionId: "",
network: "test_render",
markup: markup,
isInterstitial: isInterstitial,
placementId: nil,
duration: nil,
adDimensions: adDimensions,
trackers: nil,
isMraid: isMraid,
extensions: iTunesAppId != nil ? ext : nil
)
}
}
57 changes: 54 additions & 3 deletions Application/Sources/Test/TestRenderViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
//

import UIKit
import NimbusKit

class TestRenderViewController: DemoViewController {

var isBlocking = false
var useNimbusRenderer = false

private var iTunesAppId: String?

Expand Down Expand Up @@ -170,11 +172,13 @@ class TestRenderViewController: DemoViewController {

markupTextView.resignFirstResponder()

let ad = getAdFromMarkup(adMarkup: adMarkup)

if isBlocking {
TestRenderAdViewController.showBlocking(from: self, adMarkup: adMarkup, iTunesAppId: iTunesAppId)
TestRenderAdViewController.showBlocking(from: self, ad: ad)
} else {
navigationController?.pushViewController(
TestRenderAdViewController(adMarkup: adMarkup, iTunesAppId: iTunesAppId),
TestRenderAdViewController(ad: ad),
animated: true
)
}
Expand All @@ -198,5 +202,52 @@ class TestRenderViewController: DemoViewController {

let selectedRange = markupTextView.selectedRange
markupTextView.scrollRangeToVisible(selectedRange)
}
}

// MARK: - Create NimbusAd

private func getAdFromMarkup(adMarkup: String) -> NimbusAd {
let type: NimbusAuctionType = isVideoMarkup(adMarkup: adMarkup) ? .video : .static
return createNimbusAd(auctionType: type, markup: adMarkup)
}

private func isVideoMarkup(adMarkup: String) -> Bool {
let prefix = adMarkup.prefix(5).lowercased()
return prefix == "<vast" || prefix == "<?xml"
}

private func createNimbusAd(
placementId: String? = nil,
auctionType: NimbusAuctionType,
markup: String,
isMraid: Bool = true,
isInterstitial: Bool = true
) -> NimbusAd {
let adDimensions = isInterstitial ?
NimbusAdDimensions(width: 320, height: 480) :
NimbusAdDimensions(width: 300, height: 50)

let ext = NimbusAdExtensions(
skAdNetwork: iTunesAppId != nil ? NimbusAdSkAdNetwork(advertisedAppStoreItemID: iTunesAppId) : nil,
useNimbusVideoRenderer: useNimbusRenderer
)

return NimbusAd(
position: "",
auctionType: auctionType,
bidRaw: 0,
bidInCents: 0,
contentType: "",
auctionId: "",
network: "test_render",
markup: markup,
isInterstitial: isInterstitial,
placementId: nil,
duration: nil,
adDimensions: adDimensions,
trackers: nil,
isMraid: isMraid,
extensions: ext
)
}
}

0 comments on commit d1d2d31

Please sign in to comment.