原生广告 - uc-union/union-ads-sdk-demo GitHub Wiki
注意: 务必保证SDK已经初始化,请参考 SDK初始化 在使用原生广告的时候,必须在原生广告中加入U盟角标(通过NativeAdAssets.getAdMarkView获取),否则会导致审核不通过.
原生广告是广告SDK提供的可定制性最强的广告,广告SDK只将广告相关的资源返回给应用开发者,由应用开发者自定义其位置,大小和排版。
原生广告的使用代码示例如下,完整代码可以参考 NativeFragment.java
final NativeAd nativeAd = new NativeAd(
MainActivity.this);
nativeAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded(Ad ad) {
NativeAdAssets assets = nativeAd.getNativeAdAssets();
/* ... */
}
@Override
public void onAdClosed(Ad ad) {
}
@Override
public void onAdShowed(Ad ad) {
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onAdError(Ad ad, AdError adError) {
}
});
AdRequest adRequest = AdRequest.newBuilder()
.pub(<Pub>)
.build();
nativeAd.loadAd(adRequest);
注意:
- 在
onAdLoaded
的回调后才从NativeAd
中通过getNativeAdAssets
方法获取广告素材NativeAdAssets
,否则会返回null
<Pub>
为广告位的唯一标识,请从U盟前台或BD处获取
SDK将自动记录展示并处理点击。请务必使用NativeAd
实例注册展示广告的View,以便让SDK知晓并处理展示和点击。
通过下述接口注册View:
registerViewForInteraction(ViewGroup parent, View... clickable)
parent
为所有点击元素clickable
的容器。
默认情况下,可以通过NativeAdAssets
的getCovers()
获取全部cover的NativeAdAssets.Image
,开发者需要根据需求选取合适图片展示。
SDK提供了ImageFilter
来帮助开发者简化图片的过滤,通过传入希望的图片宽高(dp)以过滤出合适的NativeAdAssets.Image
:
ImageFilter.filter(List<NativeAdAssets.Image> images, int width, int height)
当没有符合输入尺寸的图片时,
ImageFiler
可能返回null
。
NativeAdAssets.Image
只包含图片宽高、图片URL等必要的信息,因此开发者需要自己下载图片二进制数据并解码成Bitmap对象。
SDK提供了ImageDownloader
来帮助开发者简化图片下载和展示的。
ImageDownloader
提供了两种使用方式:
-
下载图片并异步返回
Drawable
,使用例子如下:ImageDownloader.downloadImage(image, new ImageDownloader.Delegate() { @Override public void onSuccess(Drawable drawable) { } @Override public void onFail() { } })
-
下载图片并填充到
ImageView
中,提供如下两个不同签名的接口:ImageDownloader.downloadAndDisplayImage(NativeAdAssets.Image image, ImageView imageView) ImageDownloader.downloadAndDisplayImage(NativeAdAssets.Image image, ImageView imageView, Drawable fallback)
fallback
为当图片下载失败时,填充的默认Drawable
运行包含上述代码的Demo项目,您应该会看到如下内容: