Skip to content

原生广告

原生广告是通过平台特有的用户界面组件向用户展示的广告资源。它们的呈现方式与您的应用程序保持一致,并且可以按照您的应用程序的视觉设计进行自定义。

当原生广告加载完成时,您的应用程序会接收到一个包含广告资源的广告对象,之后由应用程序而非 Carty SDK 负责展示这些资源。

本指南将向您介绍如何将原生广告整合到您的应用程序中。

请求广告

构建CTAdRequest并传入placementId,调用CTNative.loadAd方法请求广告。

  • Java
java

CTAdRequest adRequest = new CTAdRequest.Builder()
    .setPlacementId("NATIVE_PLACEMENT_ID")// [必要] carty开发者平台生成的placementId
    .setMute(true)// [可选] 控制视频是否静音播放 sdk默认值true
    .build();
CTNative ctNative = new CTNative(adRequest, new CTNativeLoadListener() {
    
    @Override
    public void onLoaded(CTBaseAd baseAd) {
        onNativeLoaded(baseAd);
    }

    @Override
    public void onLoadFailed(CTAdError adError) {
    }
});
ctNative.loadAd();
  • kotlin
kotlin

val adRequest = CTAdRequest.Builder()
    .setPlacementId("NATIVE_PLACEMENT_ID")// [必要] carty开发者平台生成的placementId
    .setMute(true)// [可选] 控制视频是否静音播放 sdk默认值true
    .build()
val ctNative = CTNative(adRequest, object : CTNativeLoadListener() {
    
    override fun onLoaded(baseAd: CTBaseAd?) {
        onNativeLoaded(baseAd)
    }

    override fun onLoadFailed(adError: CTAdError?) {
    }
})
ctNative.loadAd()

获取原生广告素材

广告加载成功后,调用CTBaseAd.getNativeInfo获取广告素材。

  • Java
java

public void onNativeLoaded(CTBaseAd baseAd) {
    if (baseAd != null) {
        ICTNativeInfo nativeInfo = baseAd.getNativeInfo();
        String title = nativeInfo.getTitle();
        String subTitle = nativeInfo.getSubTitle();
        String iconUrl = nativeInfo.getIconUrl();
        String imgUrl = nativeInfo.getImageUrl();
        String logoUrl = nativeInfo.getLogoUrl();
        String ctaText = nativeInfo.getCallToAction();
        String rating = nativeInfo.getRating();
        String likes = nativeInfo.getLikes();
        String sponsored = nativeInfo.getSponsored();
        String adChoiceUrl = nativeInfo.getAdChoiceUrl();
    }
}
  • kotlin
kotlin

fun onNativeLoaded(baseAd: CTBaseAd?) {
    if (baseAd != null) {
        val nativeInfo: ICTNativeInfo = baseAd.getNativeInfo()
        nativeInfo?.apply {
            val title = nativeInfo.title
            val subTitle = nativeInfo.subTitle
            val iconUrl = nativeInfo.iconUrl
            val imgUrl = nativeInfo.imageUrl
            val logoUrl = nativeInfo.logoUrl
            val ctaText = nativeInfo.callToAction
            val rating = nativeInfo.rating
            val likes = nativeInfo.likes
            val sponsored = nativeInfo.sponsored
            val adChoiceUrl = nativeInfo.adChoiceUrl
        }
    }
}
  • 原生广告素材说明
素材类型
titleString
subTitleString
iconUrlString
imageUrlString
logoUrlString
callToActionString
ratingString
likesString
sponsoredString
adChoiceUrlString

原生广告MediaView

原生广告必须获取SDK提供的CTMediaView添加到布局中展示(支持图片和视频)。

  • Java
java

// 开发者可以通过外层布局控制mediaView的展示区域
View mediaView = ctNative.getMediaView(context);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER;

mediaViewContainer.addView(mediaView, params);
  • kotlin
kotlin

// 开发者可以通过外层布局控制mediaView的展示区域
val mediaView = ctNative.getMediaView(context)
val params = FrameLayout.LayoutParams(
    FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)
params.gravity = Gravity.CENTER

mediaViewContainer.addView(mediaView, params)

注册监听

建议在广告展示之前注册广告监听。

java

List<View> clickViews = new ArrayList<>();
clickViews.add(titleTv);
clickViews.add(subTitleTv);
clickViews.add(iconIv);
clickViews.add(mediaView);
clickViews.add(ctaBtn);
ctNative.registerViewForInteraction(contentView, clickViews, new CTNativeAdListener() {
    @Override
    public void onShown(CTBaseAd baseAd) {
    }

    @Override
    public void onShowFailed(CTBaseAd baseAd, CTAdError adError) {
    }

    @Override
    public void onClicked(CTBaseAd baseAd) {
    }
});
  • kotlin
kotlin

val clickViews = arrayListOf<View>()
clickViews.add(titleTv)
clickViews.add(subTitleTv)
clickViews.add(iconIv)
clickViews.add(mediaView)
clickViews.add(ctaBtn)
ctNative.registerViewForInteraction(contentView, clickViews, object : CTNativeAdListener {
    override fun onShown(baseAd: CTBaseAd?) {
    }

    override fun onShowFailed(baseAd: CTBaseAd?, adError: CTAdError?) {
    }

    override fun onClicked(baseAd: CTBaseAd?) {
    }
})

销毁广告

建议在Activity销毁时调用destroy方法释放广告资源。

java

ctNative.destroy();
  • kotlin
kotlin

ctNative.destroy()

GitHub示例