From 14f2f9f5a9c475c49e748ddba3ef59648800c2ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8F=82?= <799657600@qq.com> Date: Sun, 6 Jul 2025 16:20:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 29 ++++++++++++++----- .../main/java/com/tfq/finances/app/App.java | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 38ec96a..3c1308e 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,28 @@ # 广告模块集成指南 -#### 1.0.0: -#### 1.0.0: +#### 版本 1.0.0 +#### 项目gradle +```java +maven { + url "http://124.221.136.193:3000/app-lib/JKBaseLib/raw/master/maven" + allowInsecureProtocol = true // 允许HTTP + metadataSources { + artifact() // 强制校验POM文件 + } +} +``` + +#### 模块的gradle +```java +implementation ('com.your.group:lib-name:1.0.0@aar') { + transitive = true // 确保嵌套依赖被加载 +} +``` + ### 基础配置(必填项) ```java new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) -.addSlot(AD_CODE_SPLASH, "splash_id") // 开屏广告位 -.addSlot(AD_CODE_REWARD, "reward_id") // 激励视频广告位 -.addSlot(AD_CODE_FEED, "feed_id") // 信息流广告位 -.addSlot(AD_CODE_BANNER, "banner_id") // Banner广告位 - .addSlot(AD_APPID, "app_id") // APPID .addSlot(AD_CSJID, "csj_id") // CSJID .addSlot(AD_CODE_SPLASH, "splash_id") // 添加横幅广告位 @@ -44,8 +56,9 @@ new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) - 隐私合规‌:确保用户已同意隐私政策 - 版本兼容‌:最低支持Android 7.0(API 24) -### 初始化失败监听-->重新请求广告开关 +### 广告开关初始化失败监听 ```java +// 重新请求广告开关 ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged() { diff --git a/app/src/main/java/com/tfq/finances/app/App.java b/app/src/main/java/com/tfq/finances/app/App.java index 11e4722..5031c40 100644 --- a/app/src/main/java/com/tfq/finances/app/App.java +++ b/app/src/main/java/com/tfq/finances/app/App.java @@ -1 +1 @@ -package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.ADStateUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; import com.tfq.ad.utils.LogAd; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.finances.jzrcj.R; import com.tfq.finances.main.AdUtils; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.IConstituteApp; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private boolean noAD; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; private List applications; private boolean need_login; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); LogK.e("sha1= " + AppSigning.getSha1(this)); LogK.e("build " + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public boolean getNeedLogin() { return need_login = mContext.getResources().getBoolean(R.bool.need_login); } public void agreeSercurity() { SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { initApplications(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void initApplications() { BaseConstants.BASE_APP_DEBUG_PRINT = Constants.APP_DEBUG_PRINT; applications = new ArrayList<>(); applications.add("com.tfq.library.app.LibraryApp"); // applications.add("com.tfq.ad.app.AdApp"); for (String item : applications) { try { Class clazz = Class.forName(item); if (clazz != null) { Object obj = clazz.newInstance(); if (obj instanceof IConstituteApp) { IConstituteApp a = (IConstituteApp) obj; a.onCreate(this); } } } catch (Exception e) { e.printStackTrace(); } } new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(ADConstants.AD_CSJID, App.getInstances().getCsjId()) // CSJID .addSlot(ADConstants.AD_CODE_SPLASH, getCsjIdSplash()) // 添加横幅广告位 .addSlot(ADConstants.AD_CODE_REWARD, getCsjIdReward()) // 激励视频广告位 .addSlot(ADConstants.AD_CODE_FEED1, getCsjIdFeed1()) // 信息流1广告位 .addSlot(ADConstants.AD_CODE_BANNER, getCsjIdBanner()) // banner广告位 .initialize(); ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged() { AdUtils.getAdvFlag(); } }); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file +package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.ADStateUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; import com.tfq.ad.utils.LogAd; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.finances.jzrcj.R; import com.tfq.finances.main.AdUtils; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.IConstituteApp; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private boolean noAD; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; private List applications; private boolean need_login; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); LogK.e("sha1= " + AppSigning.getSha1(this)); LogK.e("build " + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public boolean getNeedLogin() { return need_login = mContext.getResources().getBoolean(R.bool.need_login); } public void agreeSercurity() { SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { initApplications(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void initApplications() { BaseConstants.BASE_APP_DEBUG_PRINT = Constants.APP_DEBUG_PRINT; applications = new ArrayList<>(); applications.add("com.tfq.library.app.LibraryApp"); // applications.add("com.tfq.ad.app.AdApp"); for (String item : applications) { try { Class clazz = Class.forName(item); if (clazz != null) { Object obj = clazz.newInstance(); if (obj instanceof IConstituteApp) { IConstituteApp a = (IConstituteApp) obj; a.onCreate(this); } } } catch (Exception e) { e.printStackTrace(); } } new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(ADConstants.AD_CSJID, getCsjId()) // CSJID .addSlot(ADConstants.AD_CODE_SPLASH, getCsjIdSplash()) // 添加横幅广告位 .addSlot(ADConstants.AD_CODE_REWARD, getCsjIdReward()) // 激励视频广告位 .addSlot(ADConstants.AD_CODE_FEED1, getCsjIdFeed1()) // 信息流1广告位 .addSlot(ADConstants.AD_CODE_BANNER, getCsjIdBanner()) // banner广告位 .initialize(); ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged() { AdUtils.getAdvFlag(); } }); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file