package org.cocos2dx.javascript;
import static org.cocos2dx.javascript.AdConfig.APP_OPEN_ID;
import static org.cocos2dx.javascript.AdConfig.BANNER_ID;
import static org.cocos2dx.javascript.AdConfig.INTERSTITIAL_ID;
import static org.cocos2dx.javascript.AdConfig.REWARDED_ID;
import static org.cocos2dx.javascript.AdConfig.SDK_KEY;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import com.applovin.mediation.*;
import com.applovin.mediation.ads.*;
import com.applovin.sdk.AppLovinMediationProvider;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkConfiguration;
import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
import java.util.Collections;
import java.util.Objects;
// 单例模式
public class AppLovinHelper implements MaxAdRevenueListener{
private static final String TAG = "GPFAppMAX";
private static MaxAdView bannerAd = null;
private static MaxInterstitialAd interstitialAd = null;
private static MaxRewardedAd rewardedAd = null;
private static MaxAppOpenAd appOpenAd = null;
private static int contentWidth;
private static int bannerHeight;
// 1. 私有构造方法
private AppLovinHelper() {}
private static class SingletonHolder {
private static final AppLovinHelper INSTANCE = new AppLovinHelper();
}
// 全局访问单例
public static AppLovinHelper getInstance() {
return SingletonHolder.INSTANCE;
}
public void initAds() {
try {
// 获取内容区域视图
// View contentView = ActivityHolder.getActivity().findViewById(android.R.id.content);
// 获取宽度
// contentWidth = contentView.getWidth();
// bannerHeight = (int) Math.round(50.0 * contentWidth / 320);
appOpenAd = new MaxAppOpenAd(APP_OPEN_ID, ActivityHolder.getActivity());
appOpenAd.setListener(new AppOpenListener());
appOpenAd.setRevenueListener(this);
// bannerAd = new MaxAdView(BANNER_ID);
// bannerAd.setListener(new BannerListener());
// bannerAd.setRevenueListener(this);
// 设置Banner位置(底部居中)
// FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
// FrameLayout.LayoutParams.MATCH_PARENT,
// bannerHeight
// );
// params.gravity = android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_HORIZONTAL;
// ActivityHolder.getActivity().addContentView(bannerAd, params);
// bannerAd.setVisibility(android.view.View.GONE);
interstitialAd = new MaxInterstitialAd(INTERSTITIAL_ID);
interstitialAd.setListener(new InterstitialListener());
interstitialAd.setRevenueListener(this);
rewardedAd = MaxRewardedAd.getInstance(REWARDED_ID);
rewardedAd.setListener(new RewardedListener());
rewardedAd.setRevenueListener(this);
Log.d(TAG, "Ad initialized");
sendEventToTS("initSuccess");
} catch (Exception e) {
Log.e(TAG, "Ad initialization failed: " + e.getMessage(), e);
sendEventToTS("initFailed");
}
}
public static void showMediationDebugger() {
AppLovinSdk.getInstance( ActivityHolder.getActivity() ).showMediationDebugger();
}
public static void loadAppOpenAd() {
Log.d(TAG, "------------start Loading AppopenAd");
// 开屏广告
appOpenAd.loadAd();
}
public static void showAppOpenAd() {
if (appOpenAd != null) {
ActivityHolder.getActivity().runOnUiThread(() -> {
try {
if (appOpenAd.isReady()) {
appOpenAd.showAd();
Log.d(TAG, "AppOpenAd shown");
} else {
Log.w(TAG, "AppOpenAd not ready");
sendEventToTS("onAppOpenNotReady");
appOpenAd.loadAd();
}
} catch (Exception e) {
Log.e(TAG, "Show app open failed: " + e.getMessage(), e);
sendEventToTS("onAppOpenFailed");
}
});
}
}
public static void loadBanner() {
bannerAd.loadAd();
Log.d(TAG, "BannerAd initialized");
}
// region 广告控制方法
public static void showBanner() {
if (bannerAd != null) {
ActivityHolder.getActivity().runOnUiThread(() -> {
try {
bannerAd.setVisibility(android.view.View.VISIBLE);
Log.d(TAG, "Banner shown");
} catch (Exception e) {
Log.e(TAG, "Show banner failed: " + e.getMessage(), e);
}
});
}
}
public static void hideBanner() {
if (bannerAd != null) {
ActivityHolder.getActivity().runOnUiThread(() -> {
try {
bannerAd.setVisibility(android.view.View.GONE);
Log.d(TAG, "Banner hidden");
} catch (Exception e) {
Log.e(TAG, "Hide banner failed: " + e.getMessage(), e);
}
});
}
}
public static void loadInterstitial() {
Log.d(TAG, "------------start Loading InterstitialAd");
if(interAdIsReady()) return;
interstitialAd.loadAd();
}
public static void showInterstitial() {
if (interAdIsReady()) {
ActivityHolder.getActivity().runOnUiThread(() -> {
interstitialAd.showAd(ActivityHolder.getActivity()); // 传递参数
});
}
}
public static boolean interAdIsReady(){
return interstitialAd.isReady();
}
public static void loadRewarded() {
if(rewardedAd.isReady()) return;
rewardedAd.loadAd();
}
public static void showRewarded() {
if (rewardedAd.isReady()) {
ActivityHolder.getActivity().runOnUiThread(() -> {
rewardedAd.showAd(ActivityHolder.getActivity()); // 传递参数
});
}
}
public static boolean rewardedAdIsReady(){
return rewardedAd.isReady();
}
// endregion
// region 广告回调监听器
private static class AppOpenListener implements MaxAdListener {
@Override public void onAdLoaded(MaxAd ad) {
Log.d(TAG, "MaxAdListener------------AppOpenAdLoaded");
sendEventToTS("onAppOpenLoaded");
}
@Override public void onAdDisplayed(MaxAd ad) {
Log.d(TAG, "MaxAdListener------------AppOpenAdDisplayed");
sendEventToTS("onAppOpenDisplayed");
}
@Override public void onAdHidden(MaxAd ad) {
appOpenAd.loadAd();
Log.d(TAG, "MaxAdListener------------AppOpenAdHidden");
sendEventToTS("onAppOpenDismissed");
}
@Override public void onAdClicked(MaxAd ad) {}
@Override public void onAdLoadFailed(String adUnitId, MaxError error) {
Log.d(TAG, "MaxAdListener------------AppOpenAdLoadFailed");
sendEventToTS("onAppOpenFailed");
}
@Override public void onAdDisplayFailed(MaxAd ad, MaxError error) {
Log.d(TAG, "MaxAdListener------------AppOpenAdDisplayFailed");
}
}
private static class BannerListener implements MaxAdViewAdListener {
@Override public void onAdLoaded(MaxAd ad) {
Log.d(TAG, "MaxAdListener-------" + contentWidth + "----------" + bannerHeight +"-------BannerAdLo
没有合适的资源?快使用搜索试试~ 我知道了~
cocos2.x版本集成Max广告

共11个文件
ts:5个
java:5个
png:1个

0 下载量 113 浏览量
2025-09-02
12:24:50
上传
评论
收藏 107KB ZIP 举报
温馨提示
cocos2.x版本桥接集成Max广告,安卓原生端以及cocos端配置
资源推荐
资源详情
资源评论































收起资源包目录















共 11 条
- 1
资源评论


智玲君
- 粉丝: 255
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 水墨画:牵牛花(中班美工).doc
- 高中生物选修三导学案12基因工程的基本操作程序.doc
- 计算机专业自荐信.docx
- 关于强电线路对通信线路的及其防护.doc
- KTV管理公司和KTV管理团队的区别.docx
- 第七章-停车场管理系统设备安装工程-定额.doc
- 广东省深圳中学2020届高三2月份网络教学质量监测理综化学试题Word版含解析-(1).doc
- 第8章-外部线路工程.ppt
- 个人家庭理财流水账Excel表格.xls
- 阀门、管件试验作业指导书.docx
- c语言while循环获奖课件.pptx
- 助教负责人培训(1).doc
- [四川]农迁房安全监理实施细则ser.doc
- PLC技术在电器工程自动化控制中的运用论文.doc
- 电气工程施工图预算编制详解(含图例及计算).ppt
- 基础计算机培训课件.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
