Events

You can observe the lifecycle of a FuseAdView by listening to its emitted events.

Currently, the following events are available:

  • An ad has started loading
  • An ad has finished loading successfully
  • An error occurred while loading an ad
  • An ad impression was recorded
  • The ad view size changed

Android

To listen for events on Android, implement the FuseAdViewListener interface and add it to your FuseAdView instance:

class EventListener : FuseAdViewListener {
  override fun onEvent(adView: FuseAdView, event: FuseAdViewEvent) {
    println("Fuse Event: $event")
  }
  
  override fun onSizeChanged(adView: FuseAdView, width: Int, height: Int) {
    println("Size changed to ${width}x$height")
  }  
}

val adView = FuseAdView(context, code = "<zone_code>")
adView.addListener(EventListener())

Jetpack Compose

In Jetpack Compose, pass an event handler lambda to ComposeFuseAdView:

fun onEvent(adView: FuseAdView, event: FuseAdViewEvent) {
  println("Fuse Event: $event")
}

fun onSizeChanged(adView: FuseAdView, width: Int, height: Int) {
  println("Size changed to ${width}x$height")
}

ComposeFuseAdView(
  code = "<zone_code>",
  onEvent = ::onEvent,
  onSizeChanged = ::onSizeChanged,
)

iOS

On iOS, set the delegate property of FuseAdView to an object that implements the FuseAdViewDelegate protocol:

class EventDelegate: NSObject, FuseAdViewDelegate {
  func onEvent(adView: FuseAdView, event: FuseAdViewEvent) {
    print("Fuse Event: \(event)")
  }
  
  func onSizeChanged(adView: FuseAdView, size: CGSize) {
    print("Size changed to \(size.width)x\(size.height)")
  }
}

let adView = FuseAdView(code: "<zone_code>")
adView.delegate = EventDelegate()

SwiftUI

In SwiftUI, provide an event handler when creating a FuseAdViewRepresentable instance:

FuseAdViewRepresentable(
  code: "<zone_code>",
)
.onEvent({ adView, event in
  print("Fuse Event: \(event)")
})
.onSizeChanged({ adView, size in
  print("Size changed to \(size.width)x\(size.height)")
})

Flutter

FuseAdView(
    code: "example_fixed_size_banner",
    params: FuseAdViewParams(
        customTargeting: {
            "sport": "basketball",
            "size": "small"
        },
        contentUrls: [
            "https://www.publift.com/about"
        ]
    ),
    onEvent: ({event}) {
        debugPrint("Fuse Event: $event")
    },
    onSizeChanged: ({width, height}) {
        debugPrint("Size changed to $width x $height");
    },
)