The manual request/render flow can be implemented if you want to request an ad to be shown at a later time.
We highly recommend the use of our Nimbus Dynamic Unit which simplifies the process of requesting and rendering ads.
Initialize Nimbus SDK
Please follow the integration guide to initialize the SDK and the renderers as necessary.
Requesting
Make a request
val adManager =NimbusAdManager()adManager.makeRequest( context =requireContext(), request = NimbusRequest.forBannerAd(item, Format.BANNER_320_50, Position.HEADER), listener =object : RequestManager.Listener {overridefunonAdResponse(nimbusResponse: NimbusResponse) {// Request completed with the given `nimbusResponse` }overridefunonError(error: NimbusError) {// Nimbus request failed due to an error or no bid } })
let requestManager =NimbusRequestManager()requestManager.delegate = selfrequestManager.performRequest( request: NimbusRequest.forBannerAd( position:"position", format: .banner320x50, adPosition: .header))extensionMyClass:NimbusRequestManagerDelegate {funcdidCompleteNimbusRequest(request: NimbusRequest, ad: NimbusAd) {// Request completed with the given ad }funcdidFailNimbusRequest(request: NimbusRequest, error: NimbusError) {// Nimbus request failed due to an error or no bid }}
Rendering
Follow the steps below to render an ad with the given NimbusAd/NimbusResponse.
Renderer.loadAd( nimbusResponse, adFrame,object : Renderer.Listener, NimbusError.Listener {overridefunonAdRendered(controller: AdController) { controller.listeners.add(object : AdController.Listener {overridefunonAdEvent(adEvent: AdEvent) {TODO("Receive events like `loaded`, `impression`, `clicked`") }overridefunonError(error: NimbusError) {TODO("Errors thrown after the ad has been rendered") } } ) }overridefunonError(error: NimbusError) { Timber.e("Ad rendering failed") } })
// Create a NimbusAdViewlet adView =NimbusAdView(adPresentingViewController: self)adView.delegate = self// container: UIViewcontainer.addSubview(adView)adView.translatesAutoresizingMaskIntoConstraints =falseNSLayoutConstraint.activate([ adView.leadingAnchor.constraint(equalTo: container.leadingAnchor), adView.trailingAnchor.constraint(equalTo: container.trailingAnchor), adView.topAnchor.constraint(equalTo: container.topAnchor), adView.bottomAnchor.constraint(equalTo: container.bottomAnchor)])// Render an adadView.delegate = selfadView.render(ad: ad)// When ready to start the adadView.start()// To stop / pause the adadView.stop()// To destroy the ad when donadView.destroy()// Listen for eventsextensionMyClass:AdControllerDelegate {funcdidReceiveNimbusEvent(controller: AdController, event: NimbusEvent) {// Receive events like `loaded`, `impression`, `clicked` }/// Received an error for the adfuncdidReceiveNimbusError(controller: AdController, error: NimbusError) {// Errors thrown related to ad rendering }}
SKOverlay
To enable SKOverlay for ad units integrated this way, you can set NimbusAdView.showsSKOverlay. This allows more control over if the overlay shows up for each ad unit.
let adView: NimbusAdViewadView.showsSKOverlay =true
To enable SKOverlay for all units globally, set Nimbus.shared.isSKOverlayEnabledForAllUnits.
Nimbus.shared.isSKOverlayEnabledForAllUnits =true
Caution: Please note that the setting these fields will show the overlay regardless of whether the ad is a banner or interstitial.