Comments (1)
我将代码进行如下改动,兼容 原生模板,期待大佬更新 新版本。
public class CustomCsjProvider extends CsjProvider {
@OverRide
public void getNativeAdList(@NotNull Activity activity, @NotNull String adProviderType, @NotNull String alias, int maxCount, @NotNull NativeListener listener) {
if (Native.INSTANCE.getNativeAdType() == -1) {
throw new IllegalArgumentException("|--------------------------------------------------------------------------------------\n" +
" | 必须在每次请求穿山甲的原生广告之前设置类型。\n" +
" | 设置方式:\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_XXX(类型和你的广告位ID一致)。\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_FEED\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_INTERACTION_AD\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_BANNER\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_CACHED_SPLASH\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_DRAW_FEED\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_FULL_SCREEN_VIDEO\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_REWARD_VIDEO\n" +
" | CsjProvider.Native.nativeAdType = AdSlot.TYPE_SPLASH\n" +
" | 任选其一\n" +
" |--------------------------------------------------------------------------------------");
}
callbackFlowStartRequest(adProviderType, listener);
//设置广告参数
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(TogetherAdCsj.INSTANCE.getIdMapCsj().get(alias))
.setSupportDeepLink(Native.INSTANCE.getSupportDeepLink())
.setAdCount(maxCount)
.setExpressViewAcceptedSize(Native.INSTANCE.getImageAcceptedSizeWidth$csj_release(), Native.INSTANCE.getImageAcceptedSizeHeight$csj_release())
.setImageAcceptedSize(Native.INSTANCE.getImageAcceptedSizeWidth$csj_release(), Native.INSTANCE.getImageAcceptedSizeHeight$csj_release())
.build();
TTAdSdk.getAdManager().createAdNative(activity).loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {
@Override
public void onError(int code, String message) {
callbackFlowFailed(adProviderType, listener, "错误码: " + code + "}, 错误信息" + message);
}
@Override
public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
if (ads == null || ads.size() == 0) {
callbackFlowFailed(adProviderType, listener, "请求成功,但是返回的list为空");
return;
}
callbackFlowLoaded(adProviderType, listener, ads);
}
});
}
@Override
public boolean nativeAdIsBelongTheProvider(@NotNull Object adObject) {
return true;
}
public class NativeViewCsjSimple6 extends BaseNativeView {
@OverRide
public void showNative(@NotNull String s, @NotNull Object o, @NotNull ViewGroup viewGroup, @nullable NativeViewListener nativeViewListener) {
Log.e("", "");
com.bytedance.sdk.openadsdk.core.nativeexpress.k k = (com.bytedance.sdk.openadsdk.core.nativeexpress.k) o;
// viewGroup.removeAllViews();
if (k.getExpressAdView().getParent() == null) {
viewGroup.addView(k.getExpressAdView());
}
}
}
public class NativeTemplateSimple5 extends BaseNativeTemplate {
@Nullable
@Override
public BaseNativeView getNativeView(@NotNull String s) {
if (AdProviderType.GDT.getType().equals(s)) {
return new NativeViewGdtSimple5();
} else if (AdProviderType.CSJ.getType().equals(s)) {
return new NativeViewCsjSimple6();
}
// else if(AdProviderType.BAIDU.getType().equals(s)){
// return new NativeViewBaiduSimple5();
// }
return null;
}
}
CustomCsjProvider.Native.INSTANCE.setNativeAdType(AdSlot.TYPE_FEED);
adHelperNativeRv.getList(new NativeListener() {
@OverRide
public void onAdLoaded(@NotNull String s, @NotNull List<?> list) {
bindAdListener((List) list);
for (Object o : list) {
myAdapter.addData(new TopListBean(o));
}
}
@Override
public void onAdStartRequest(@NotNull String s) {
//每个提供商请求之前都会回调
}
@Override
public void onAdFailedAll() {
//所有的提供商都失败
}
@Override
public void onAdFailed(@NotNull String s, @Nullable String s1) {
//单个提供商请求失败
}
});
private void bindAdListener(final List ads) {
final int count = myAdapter.getData().size();
for (TTNativeExpressAd ad : ads) {
final TTNativeExpressAd adTmp = ad;
myAdapter.addData(new TopListBean(adTmp));
adTmp.setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {
@Override
public void onAdClicked(View view, int type) {
ToastUtils.s(getActivity(), "广告被点击");
}
@Override
public void onAdShow(View view, int type) {
ToastUtils.s(getActivity(), "广告展示");
}
@Override
public void onRenderFail(View view, String msg, int code) {
ToastUtils.s(getActivity(), msg + " code:" + code);
}
@Override
public void onRenderSuccess(View view, float width, float height) {
//返回view的宽高 单位 dp
ToastUtils.s(getActivity(), "渲染成功");
myAdapter.notifyDataSetChanged();
}
});
ad.render();
}
}
from togetherad.
Related Issues (20)
- 快手视频广告,连续弹出好几个广告 HOT 1
- 快手视频广告show方法永远返回false HOT 1
- 缺少预加载和重试机制 HOT 3
- 封装统一的初始化具体广告配置的方法
- 这四家厂商开屏广告ecpm排名是怎样的? HOT 4
- 权重好像有些问题 HOT 2
- 建议拓展展示机制 HOT 2
- 该更新一下SDK了
- 如果有后台控制就更好了 HOT 2
- 你好,为什么把芒果的广告删掉了呢
- 穿山甲混淆文件配置不完整 HOT 2
- 会一直维护吗? HOT 1
- 优量汇初始化错误
- 开屏广告发生崩溃
- 预加载广告 HOT 2
- 优量汇激励视频问题 HOT 1
- 广点通安卓13兼容问题
- 调用激励广告报错 HOT 1
- 穿山甲的新插屏不行啊,是不支持吗? HOT 1
- 5.2.5版本无法从远端仓库拉取,只能拉取5.2.4版本
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from togetherad.