Placement Events Listener
info
Event-Driven System: The Teads SDK uses a comprehensive event system through TeadsAdPlacementEventsDelegate to manage video playback 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)
- Handle user interactions and engagement
- Monitor ad performance and viewability
Implementing TeadsAdPlacementEventsDelegate
Basic Implementation
import tv.teads.sdk.*
class YourActivity : AppCompatActivity(), TeadsAdPlacementEventsDelegate {
    
    private var mediaPlacement: TeadsAdPlacementMedia? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setupMediaPlacement()
    }
    
    private fun setupMediaPlacement() {
        val adPlacementSettings = TeadsAdPlacementSettings.Builder()
            .enableDebug()
            .build()
        
        val adRequestSettings = TeadsAdRequestSettings.Builder()
            .pageUrl(Uri.parse("https://example.com/article"))
            .build()
        
        mediaPlacement = TeadsAdPlacementMedia(
            this,
            84242,
            adPlacementSettings,
            this
        )
        
        mediaPlacement?.requestAd(adRequestSettings)
    }
    
    // MARK: - TeadsAdPlacementEventsDelegate
    
    override fun onPlacementEvent(
        placement: TeadsAdPlacement,
        event: TeadsAdPlacementEventName,
        data: Map<String, Any>?
    ) {
        when (event) {
            TeadsAdPlacementEventName.PLAY -> {
                handleVideoPlay()
            }
            
            TeadsAdPlacementEventName.PAUSE -> {
                handleVideoPause()
            }
            
            TeadsAdPlacementEventName.RESUME -> {
                handleVideoResume()
            }
            
            TeadsAdPlacementEventName.COMPLETE -> {
                handleVideoComplete()
            }
            
            TeadsAdPlacementEventName.START_PLAY_AUDIO -> {
                handleAudioStart()
            }
            
            TeadsAdPlacementEventName.STOP_PLAY_AUDIO -> {
                handleAudioStop()
            }
            
            TeadsAdPlacementEventName.CLICK -> {
                handleAdClick()
            }
            
            TeadsAdPlacementEventName.IMPRESSION -> {
                handleAdImpression()
            }
            
            TeadsAdPlacementEventName.ERROR -> {
                handleAdError(data)
            }
            
            else -> {
                Log.d("TeadsSDK", "Other event: $event")
            }
        }
    }
}
User Interaction Events
Click Event
TeadsAdPlacementEventName.CLICK -> {
    Log.d("TeadsSDK", "Ad clicked")
}
Impression Event
TeadsAdPlacementEventName.IMPRESSION -> {
    Log.d("TeadsSDK", "Ad impression recorded")
}
Error Handling
Error Event
TeadsAdPlacementEventName.ERROR -> {
    Log.e("TeadsSDK", "Error data: $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