原生 Native 广告样式
优质
小牛编辑
140浏览
2023-12-01
原生(Native)
1. 确定SDK文件已经全部拷贝到工程文件的libs子目录下参考
2. 添加广告代码,添加广告代码前请确定已初始化SDK
- 原生广告和原生信息流广告请务必参考Demo中NativeActivity和NativeListActivity类:
例如:
private NativeAd nativeAd; private List<? extends View> mAdViewList; /** * adCount(默认为3,取值可写1、2、3) 决定返回view类型广告的个数。 * 具体返回的size以服务器返回为标准,请开发者自行判断,以防数组*下标越界。 */ nativeAd = new NativeAd(this, mAdUnitId, 3, new NativeAdListener() { @Override public void onAdFailed(int errorcode) { Log.d("lance", "onAdFailed:" + errorCode); } @Override public void onAdLoaded(NativeAdResponse response) { /** * 因为该sdk接入了其他平台的sdk,所以native会返回两种类型 * 一种是直接返回渲染好的类型,另一种是返回数据(1条) * 根据 response.getNativeInfoListView()是否为null判断选择广告类型 * 两种情况只能选一个 * 写法请务必参考以下代码: */ if (response.getNativeInfoListView() != null) { mAdViewList = response.getNativeInfoListView(); Log.i("lance", "getNativeInfoList:" + mAdViewList.size()); mLyContainer.removeAllViews(); for (int i = 0; i < mAdViewList.size(); i++) { View lyAdView = mAdViewList.get(i); mLyContainer.addView(lyAdView); nativeAd.nativeRender(lyAdView);//这个方法需要广告真正显示到屏幕上的时候再去调用 } } else { //返回设置的广告的多个图片的URL,SDK并未处理加载urls里面的图片,需要集成者自己去加载展示 ArrayList<String> imageUrls = response.getImageUrls(); //返回设置的广告的多个文本信息 ArrayList<String> texts = response.getTexts(); //根据广告法新规定,必须加入广告标识和广告来源。需要开发者分别放置于广告左下和右下角 ServerResponse.AdLogoInfo adUrl = response.getAdUrl();//广告字样 ServerResponse.AdLogoInfo adLogoInfo = response.getlogoUrl();//广告来源标识 // 一个广告只允许展现一次,多次展现、点击只会计入一次 updateView(response);(此方法将返回的数据渲染成View,详情见Demo) //此方法用于注册素材显示的view,集成者必须在onAdLoaded调用此方法注册此次广告,这样才能统计广告素材的展示。 NativeAdUtil.registerTracking(nativeResponse, findViewById(R.id.appinstall_layout), new NativeAdEventListener() { @Override //显示素材的view被点击时回调 public void onAdWasClicked() { Toast.makeText(NativeActivity.this, "onAdWasClicked", Toast.LENGTH_SHORT).show(); } @Override public void onAdWillLeaveApplication() { Toast.makeText(NativeActivity.this, "onAdWillLeaveApplication", Toast.LENGTH_SHORT).show(); } }); } } }); //加载广告 nativeAd.loadAd();
在广告页面onResume的时候参照:
@Override protected void onResume() { super.onResume(); if (mAdViewList != null) { for (View view : mAdViewList) { Log.e("lance", "view.onResume()"); nativeAd.nativeResume(view); } } }
在销毁的时候参照:
@Override protected void onDestroy() { super.onDestroy(); nativeAd.cancel(); // 使用完了每一个LyAdView之后都要释放掉资源。 if (mAdViewList != null) { for (View view : mAdViewList) { nativeAd.nativeDestroy(view); Log.e("lance", "nativeDestroy()"); } } }
PS:更多设置请参考Demo中的com.hubcloud.adhubsdkdemo.NativeActivity的代码.