Placement Events Listener
info
Event-Driven System: The Teads SDK uses a comprehensive event system through TeadsAdPlacementEventsDelegate to manage video playback, audio sessions, and user interactions.
Overview
The Teads SDK provides an event-driven system for managing placement events through the TeadsAdPlacementEventsDelegate. This delegate allows you to:
- Track video playback states (play, pause, resume, complete)
- Manage audio sessions during ad playback
- Handle user interactions and engagement
- Monitor ad performance and viewability
Implementing TeadsAdPlacementEventsDelegate
Basic Implementation
import TeadsSDK
class YourViewController: UIViewController, TeadsAdPlacementEventsDelegate {
    
    var mediaPlacement: TeadsAdPlacementMedia?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupMediaPlacement()
    }
    
    private func setupMediaPlacement() {
        let adPlacementSettings = TeadsAdPlacementSettings { settings in
            settings.enableDebug()
        }
        
        let adRequestSettings = TeadsAdRequestSettings { settings in
            settings.pageUrl(URL(string: "https://example.com/article"))
        }
        
        mediaPlacement = TeadsAdPlacementMedia(
            pid: 84242,
            settings: adPlacementSettings,
            delegate: self
        )
        
        mediaPlacement?.requestAd(adRequestSettings: adRequestSettings)
    }
    
    // MARK: - TeadsAdPlacementEventsDelegate
    
    func adPlacement(_ placement: TeadsAdPlacementIdentifiable?,
                    didEmitEvent event: TeadsAdPlacementEventName,
                    data: [String : Any]?) {
        
        switch event {
        case .play:
            handleVideoPlay()
            
        case .pause:
            handleVideoPause()
            
        case .resume:
            handleVideoResume()
            
        case .complete:
            handleVideoComplete()
            
        case .startPlayAudio:
            handleAudioStart()
            
        case .stopPlayAudio:
            handleAudioStop()
            
        case .click:
            handleAdClick()
            
        case .impression:
            handleAdImpression()
            
        case .error:
            handleAdError(data)
            
        default:
            print("Other event: \(event)")
        }
    }
}
User Interaction Events
Click Event
case .click:
    print("Ad clicked")
Impression Event
case .impression:
    print("Ad impression recorded")
Error Handling
Error Event
case .error:
    print("Ad error occurred \(data)")
Related Documentation
- Integration Guide - Complete integration steps including event handling
- Settings Configuration - Advanced configuration options
- Privacy Guide - Privacy and data handling information
- Troubleshooting Guide - Common issues and solutions