Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support SKAdN in Bidding Only scenario #1086

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
50488ca
feat: support SKAdN in native
OlenaPostindustria Jan 14, 2025
0324cc7
feat: proccess url in hidden manager if SKAdN is present
OlenaPostindustria Jan 14, 2025
b146fcb
feat: update gitignore
OlenaPostindustria Jan 14, 2025
eed4480
feat: dismiss SKStoreProductViewController when finished
OlenaPostindustria Jan 15, 2025
fd53185
feat: implement SKAdN helper for ads that contain hb_ keys
OlenaPostindustria Jan 16, 2025
c97b03b
feat: update tests
OlenaPostindustria Jan 16, 2025
2e60b79
feat: add examples to InternalTestApp
OlenaPostindustria Jan 16, 2025
8c92cec
feat: clean up
OlenaPostindustria Jan 16, 2025
c8a8b18
feat: clean up & change intervals
OlenaPostindustria Jan 17, 2025
aeb4672
feat: inscrease interval
OlenaPostindustria Jan 17, 2025
e3c0f26
feat: add support for video format
OlenaPostindustria Jan 20, 2025
5e15ca5
feat: small enhancement
OlenaPostindustria Jan 21, 2025
f7f7a92
feat: introduce SKStoreProductViewControllerPresenter
OlenaPostindustria Feb 18, 2025
ae4dbec
feat: add support of SKAdN view-through ads
OlenaPostindustria Feb 18, 2025
6861843
feat: introduce public api to activate SKAdN Store-Kit
OlenaPostindustria Feb 18, 2025
a079937
feat: remove duplicated file
OlenaPostindustria Feb 18, 2025
5b132e8
feat: remove duplicated file
OlenaPostindustria Feb 18, 2025
0208b61
feat: add display delay
OlenaPostindustria Feb 21, 2025
0f5f4d9
Revert "feat: add display delay"
OlenaPostindustria Feb 26, 2025
8b43b74
feat: minor changes
OlenaPostindustria Feb 26, 2025
4afc97e
feat: remove support of SKAdN StoreKit for video ads
OlenaPostindustria Feb 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,7 @@ xcuserdata/
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
Pods/
Pods/

# Visual Studio Code
.build/
Original file line number Diff line number Diff line change
Expand Up @@ -261,15 +261,15 @@ struct TestCaseManager {
let bannerController = PrebidOriginalAPIDisplayBannerController(rootController: adapterVC)
bannerController.adSize = CGSize(width: 320, height: 50)

bannerController.prebidConfigId = "prebid-ita-banner-320-50";
bannerController.prebidConfigId = "prebid-ita-banner-320-50"
bannerController.adUnitID = "/21808260008/prebid_demo_app_original_api_banner"

adapterVC.setup(adapter: bannerController)

setupCustomParams(for: bannerController.prebidConfigId)
}),

TestCase(title: "Banner 320x50 (GAM Original) [NO SKAdN]",
TestCase(title: "Banner 320x50 SKAdN (GAM Original) [OK, PUC]",
tags: [.banner, .originalAPI, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand All @@ -281,9 +281,10 @@ struct TestCaseManager {
Targeting.shared.sourceapp = "InternalTestApp"

let bannerController = PrebidOriginalAPIDisplayBannerController(rootController: adapterVC)
bannerController.activatePrebidSKAdN = true
bannerController.adSize = CGSize(width: 320, height: 50)

bannerController.prebidConfigId = "prebid-ita-banner-320-50";
bannerController.prebidConfigId = "prebid-demo-banner-320-50-skadn"
bannerController.adUnitID = "/21808260008/prebid_demo_app_original_api_banner"

adapterVC.setup(adapter: bannerController)
Expand Down Expand Up @@ -352,7 +353,7 @@ struct TestCaseManager {
}),

TestCase(title: "Video Outstream (GAM Original) [OK, PUC]",
tags: [.banner, .originalAPI, .server],
tags: [.video, .originalAPI, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in

Expand Down Expand Up @@ -411,6 +412,25 @@ struct TestCaseManager {
setupCustomParams(for: interstitialController.prebidConfigId)
}),

TestCase(title: "Display Interstitial 320x480 SKAdN (GAM Original) [OK, PUC]",
tags: [.interstitial, .originalAPI, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in

guard let adapterVC = vc as? AdapterViewController else {
return
}

let interstitialController = PrebidOriginalAPIDisplayInterstitialController(rootController: adapterVC)
interstitialController.prebidConfigId = "prebid-demo-display-interstitial-320-480-skadn"
interstitialController.adUnitID = "/21808260008/prebid-demo-app-original-api-display-interstitial"
interstitialController.activatePrebidSKAdN = true

adapterVC.setup(adapter: interstitialController)

setupCustomParams(for: interstitialController.prebidConfigId)
}),

TestCase(title: "Video Interstitial 320x480 (GAM Original) [OK, PUC]",
tags: [.interstitial, .originalAPI, .server, .video],
exampleVCStoryboardID: "AdapterViewController",
Expand Down Expand Up @@ -512,7 +532,7 @@ struct TestCaseManager {
setupCustomParams(for: nativeController.prebidConfigId)
}),

TestCase(title: "Native In-App (GAM Original) [OK, PUC]",
TestCase(title: "Native In-App (GAM Original) [OK]",
tags: [.native, .originalAPI, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand All @@ -533,6 +553,27 @@ struct TestCaseManager {
setupCustomParams(for: nativeController.prebidConfigId)
}),

TestCase(title: "Native In-App SKAdN (GAM Original) [OK]",
tags: [.native, .originalAPI, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in

guard let adapterVC = vc as? AdapterViewController else {
return
}

let nativeController = PrebidOriginalAPINativeController(rootController: adapterVC)
nativeController.setupNativeAdView(NativeAdViewBox())

nativeController.adUnitID = "/21808260008/apollo_custom_template_native_ad_unit"
nativeController.prebidConfigId = "prebid-demo-banner-native-styles-skadn"
nativeController.nativeAssets = .defaultNativeRequestAssets
nativeController.eventTrackers = .defaultNativeEventTrackers

adapterVC.setup(adapter: nativeController)
setupCustomParams(for: nativeController.prebidConfigId)
}),

// MARK: ---- In-Stream (Original API)

TestCase(title: "Instream Video (GAM Original) [OK, PUC]",
Expand Down Expand Up @@ -839,7 +880,7 @@ struct TestCaseManager {
}),

// NOTE: works only with InternalTestApp-Skadn target
TestCase(title: "Banner 320x50 (In-App) [SKAdN]",
TestCase(title: "Banner 320x50 SKAdN (In-App) [OK]",
tags: [.banner, .inapp, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand Down Expand Up @@ -1115,7 +1156,7 @@ struct TestCaseManager {
}),

// NOTE: works only with InternalTestApp-Skadn target
TestCase(title: "Display Interstitial 320x480 (In-App) [SKAdN]",
TestCase(title: "Display Interstitial 320x480 SKAdN (In-App) [OK]",
tags: [.interstitial, .inapp, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand Down Expand Up @@ -1558,7 +1599,7 @@ struct TestCaseManager {
}),

// NOTE: works only with InternalTestApp-Skadn target
TestCase(title: "Video Interstitial 320x480 (In-App) [SKAdN]",
TestCase(title: "Video Interstitial 320x480 SKAdN (In-App) [OK]",
tags: [.video, .inapp, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand Down Expand Up @@ -1843,7 +1884,7 @@ struct TestCaseManager {
}),

// NOTE: works only with InternalTestApp-Skadn target
TestCase(title: "Video Outstream (In-App) [SKAdN]",
TestCase(title: "Video Outstream SKAdN (In-App) [OK]",
tags: [.video, .inapp, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand Down Expand Up @@ -2079,7 +2120,7 @@ struct TestCaseManager {
setupCustomParams(for: rewardedAdController.prebidConfigId)
}),

TestCase(title: "Video Rewarded Time 320x480 (In-App) [SKAdN]",
TestCase(title: "Video Rewarded Time 320x480 SKAdN (In-App) [OK]",
tags: [.interstitial, .video, .inapp, .server],
exampleVCStoryboardID: "AdapterViewController",
configurationClosure: { vc in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class PrebidOriginalAPIDisplayBannerController:
var gamSizes = [GADAdSize]()

// Prebid
var activatePrebidSKAdN = false

private var adUnit: BannerAdUnit!

// GAM
Expand Down Expand Up @@ -61,6 +63,10 @@ class PrebidOriginalAPIDisplayBannerController:
setupAdapterController()
}

deinit {
Targeting.shared.sourceapp = nil
}

func configurationController() -> BaseConfigurationController? {
return PrebidBannerConfigurationController(controller: self)
}
Expand Down Expand Up @@ -185,6 +191,10 @@ class PrebidOriginalAPIDisplayBannerController:
rootController?.bannerView.constraints.first { $0.firstAttribute == .width }?.constant = bannerView.adSize.size.width
rootController?.bannerView.constraints.first { $0.firstAttribute == .height }?.constant = bannerView.adSize.size.height

if activatePrebidSKAdN {
adUnit.activatePrebidSKAdNetworkStoreKitAdsFlow(adView: gamBanner)
}

AdViewUtils.findPrebidCreativeSize(bannerView, success: { size in
guard let bannerView = bannerView as? GAMBannerView else { return }
bannerView.resize(GADAdSizeFromCGSize(size))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class PrebidOriginalAPIDisplayInterstitialController:

var refreshInterval: TimeInterval = 0

var activatePrebidSKAdN = false

// Prebid
private var adUnit: InterstitialAdUnit!

Expand Down Expand Up @@ -153,6 +155,11 @@ class PrebidOriginalAPIDisplayInterstitialController:
@IBAction func showButtonClicked() {
if let gamInterstitial = gamInterstitial {
rootController?.showButton.isEnabled = false

if activatePrebidSKAdN {
adUnit.activatePrebidSKAdNetworkStoreKitAdsFlow()
}

gamInterstitial.present(fromRootViewController: rootController!)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ class PrebidOriginalAPIVideoBannerController:
var adSize = CGSize.zero
var gamSizes = [GADAdSize]()

// Prebid
private var adUnit: VideoAdUnit!

// GAM
Expand Down
Loading