SwiftUI
Integrating Banner Ads using SwiftUI
To load a banner ad, first create a UIViewRepresentable object, a wrapper that lets you integrate BIDBannerView, a UIKit view type object, into your SwiftUI view hierarchy.
import bidapp
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
func makeUIView(context: Context) -> MAAdView
{
let adView = BIDBannerView.banner(
with: BIDAdFormat.banner_320x50 as! BIDAdFormat,
delegate: bannerDelegate
)
adView.delegate = context.coordinator
// Set background or background color for banners to be fully functional
adView.backgroundColor = BACKGROUND_COLOR
return adView
}
func updateUIView(_ uiView: MAAdView, context: Context) {}
func makeCoordinator() -> Coordinator
{
Coordinator()
}
}
Also, provide a custom Coordinator class for the wrapper object that conforms to BIDBannerViewDelegate so that you are notified of when your ad is ready and of other ad-related events. Inside the wrapper’s makeUIView method, create a BIDBannerView object.
extension ExampleSwiftUIWrapper
{
class Coordinator: NSObject, BIDBannerViewDelegate
{
// MARK: BIDBannerViewDelegate Protocol
func adView(_ adView: BIDBannerView, didLoadAd adInfo: BIDAdInfo) {
print("[\(String(describing: adInfo.showSessionId))][\(String(describing: adInfo.waterfallId))] readyToRefreshBanner: \(adInfo.networkId) [\(adInfo)]")
}
func adView(_ adView: BIDBannerView, didDisplayAd adInfo: BIDAdInfo) {
print("[\(String(describing: adInfo.showSessionId))][\(String(describing: adInfo.waterfallId))] didDisplayBanner: \(adInfo.networkId) [\(adInfo)]")
}
func adView(_ adView: BIDBannerView, didFailToDisplayAd adInfo: BIDAdInfo, error: Error) {
print("[\(String(describing: adInfo.showSessionId))][\(String(describing: adInfo.waterfallId))] didFailToDisplayBanner: \(adInfo.networkId) [\(adInfo)] ERROR: \(error.localizedDescription)")
}
func adView(_ adView: BIDBannerView, didClicked adInfo: BIDAdInfo) {
print("[\(String(describing: adInfo.showSessionId))][\(String(describing: adInfo.waterfallId))] bannerDidClicked: \(adInfo.networkId) [\(adInfo)]")
}
}
}
To show that ad, add the UIViewRepresentable wrapper object inside your SwiftUI view hierarchy.
// SwiftUI view to show ad
struct ExampleSwiftUIBannerAdView: View
{
var body: some View {
VStack(alignment: .center) {
Spacer()
Text("Hello bidapp!")
Spacer()
}.safeAreaInset(edge: .bottom) {
ExampleSwiftUIWrapper().frame(
minWidth: 320,
maxWidth: 320,
minHeight: 50,
maxHeight: 50,
alignment: .bottom
)
}
}
}
Last updated
Was this helpful?