Media Native Placement
Media Native Placementโ
Media Native placements allow you to create custom layouts for video ads that match your app's design.
- Kotlin
- Java
import tv.teads.sdk.combinedsdk.adplacement.TeadsAdPlacementMediaNative
import tv.teads.sdk.combinedsdk.adplacement.config.TeadsAdPlacementMediaNativeConfig
import tv.teads.sdk.combinedsdk.adplacement.interfaces.TeadsAdPlacementEventsDelegate
import tv.teads.sdk.combinedsdk.adplacement.interfaces.core.TeadsAdPlacement
import tv.teads.sdk.combinedsdk.TeadsAdPlacementEventName
import tv.teads.sdk.renderer.NativeAdView
import android.net.Uri
class ContentActivity : AppCompatActivity(), TeadsAdPlacementEventsDelegate {
private var nativePlacement: TeadsAdPlacementMediaNative? = null
private var nativeAdView: NativeAdView? = null
private lateinit var binding: ActivityNativeAdBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityNativeAdBinding.inflate(layoutInflater)
setContentView(binding.root)
setupNativeAd()
}
private fun setupNativeAd() {
// Create custom native ad view
nativeAdView = createCustomNativeAdView()
// Create configuration
val config = TeadsAdPlacementMediaNativeConfig(
124859, // Your unique Placement ID
Uri.parse("https://yoursite.com/article")
)
// Create placement
nativePlacement = TeadsAdPlacementMediaNative(
this, // Context
config, // Placement config
this // Event delegate
)
// Load and bind the ad
nativePlacement
?.loadAd()
?.let { binder ->
// Bind the ad native object to your native ad view
binder(binding.myContainerAdView.nativeAdView)
}
}
override fun onPlacementEvent(
placement: TeadsAdPlacement<*, *>,
event: TeadsAdPlacementEventName,
data: Map<String, Any>?
) {
// Listen the ad lifecycle events
}
override fun onDestroy() {
super.onDestroy()
nativePlacement?.clean()
}
}
import tv.teads.sdk.combinedsdk.adplacement.TeadsAdPlacementMediaNative;
import tv.teads.sdk.combinedsdk.adplacement.config.TeadsAdPlacementMediaNativeConfig;
import tv.teads.sdk.combinedsdk.adplacement.interfaces.TeadsAdPlacementEventsDelegate;
import tv.teads.sdk.combinedsdk.adplacement.interfaces.core.TeadsAdPlacement;
import tv.teads.sdk.combinedsdk.TeadsAdPlacementEventName;
import tv.teads.sdk.renderer.NativeAdView;
import android.net.Uri;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import java.util.Map;
public class ContentActivity extends AppCompatActivity implements TeadsAdPlacementEventsDelegate {
private TeadsAdPlacementMediaNative nativePlacement;
private NativeAdView nativeAdView;
private ActivityNativeAdBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityNativeAdBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setupNativeAd();
}
private void setupNativeAd() {
// Create custom native ad view
nativeAdView = createCustomNativeAdView();
// Create configuration โ the trailing MediaScale param has a Kotlin default
// (null, meaning "use the SDK default") that doesn't bridge; pass it explicitly
TeadsAdPlacementMediaNativeConfig config = new TeadsAdPlacementMediaNativeConfig(
124859, // Your unique Placement ID
Uri.parse("https://yoursite.com/article"),
null // MediaScale
);
// Create placement
nativePlacement = new TeadsAdPlacementMediaNative(
this, // Context
config, // Placement config
this // Event delegate
);
// Load and bind the ad โ loadAd() returns a Kotlin Function1<NativeAdView, Unit>,
// call its invoke() method from Java
Function1<NativeAdView, Unit> binder = nativePlacement.loadAd();
if (binder != null) {
binder.invoke(binding.myContainerAdView.getNativeAdView());
}
}
@Override
public void onPlacementEvent(TeadsAdPlacement<?, ?> placement, TeadsAdPlacementEventName event, Map<String, ?> data) {
// Listen the ad lifecycle events
}
@Override
protected void onDestroy() {
super.onDestroy();
if (nativePlacement != null) {
nativePlacement.clean();
}
}
}