原生广告
原生广告是通过平台特有的用户界面组件向用户展示的广告资源。它们的呈现方式与您的应用程序保持一致,并且可以按照您的应用程序的视觉设计进行自定义。
当原生广告加载完成时,您的应用程序会接收到一个包含广告资源的广告对象,之后由应用程序而非 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
}
}
}- 原生广告素材说明
| 素材 | 类型 |
|---|---|
| title | String |
| subTitle | String |
| iconUrl | String |
| imageUrl | String |
| logoUrl | String |
| callToAction | String |
| rating | String |
| likes | String |
| sponsored | String |
| adChoiceUrl | String |
原生广告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()