Explorar o código

[修改]加入三方SDK的展示和点击统计

zeki %!s(int64=5) %!d(string=hai) anos
pai
achega
bdad24e139

+ 57 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/ThirdAdsConfigEntity.java

@@ -0,0 +1,57 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * 第三方广告配置实体类
+ */
+public class ThirdAdsConfigEntity {
+    private YKYConfig ykyConfig;
+    private YTConfig ytConfig;
+
+    public YKYConfig getYkyConfig() {
+        return ykyConfig;
+    }
+
+    public void setYkyConfig(YKYConfig ykyConfig) {
+        this.ykyConfig = ykyConfig;
+    }
+
+    public YTConfig getYtConfig() {
+        return ytConfig;
+    }
+
+    public void setYtConfig(YTConfig ytConfig) {
+        this.ytConfig = ytConfig;
+    }
+
+    public class YKYConfig{
+        String appid;
+
+        public String getAppid() {
+            return appid;
+        }
+
+        public void setAppid(String appid) {
+            this.appid = appid;
+        }
+    }
+    public class YTConfig{
+        String appid;
+        String ad_id;
+
+        public String getAppid() {
+            return appid;
+        }
+
+        public void setAppid(String appid) {
+            this.appid = appid;
+        }
+
+        public String getAd_id() {
+            return ad_id;
+        }
+
+        public void setAd_id(String ad_id) {
+            this.ad_id = ad_id;
+        }
+    }
+}

+ 53 - 90
app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java

@@ -54,9 +54,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.view.activity.helper.AdHelper.*;
-import static com.tencent.klevin.base.okhttp.ErrorCode.KLSplashAdEvent_AdPlayCompletion;
-import static com.tencent.klevin.base.okhttp.ErrorCode.KLSplashAdEvent_AdShowFinish;
-import static com.tencent.klevin.base.okhttp.ErrorCode.KLSplashAdEvent_AdSkip;
+import static com.tencent.klevin.base.okhttp.ErrorCode.*;
 
 /**
  * Created by ljy on 2018/3/9.
@@ -128,14 +126,14 @@ public class SplashAct extends BaseActivity {
                     boolean isNewSmallSheep = baseMessage.getData(Boolean.class);
                     DataUtil.getInstance().setIsNewSmallSheep(isNewSmallSheep);
                     if (SysAppUtil.isNewSmallSheep()) {//新版本只显示引导页面,不展示弹窗和开屏广告
-                        fetchAdvertisement(false);//只更新,不加载,下次加载上次的数据
+                        fetchAdvertisement();//只更新,不加载,下次加载上次的数据
                         sendHandlerMessages(2000);
                     } else {
                         ad = DDProviderHelper.getInstance().getSheepAd(SheepAd.FORM_SPLASH);
                         if (ad != null) {
                             if (ad.getAd_type() == AD_TYPE_SHEEP) {
-                                //自己的广告,展示自己的广告
-                                loadAdvertising();
+                                //自己的广告,展示自己的广告
+                                loadSheepAdvertising();
                             } else {
                                 //SDK的广告,展示SDK的广告,并拉取一次广告并保存
                                 initSdkAdvertising(ad.getAd_type());
@@ -144,7 +142,7 @@ public class SplashAct extends BaseActivity {
                             sendHandlerMessages(2000);
                         }
                         //拉一次广告,不加载,下次打开APP加载上次拉的数据
-                        fetchAdvertisement(false);
+                        fetchAdvertisement();
                     }
                 })
                 .subscribe();
@@ -156,103 +154,71 @@ public class SplashAct extends BaseActivity {
     private void initSdkAdvertising(int adType) {
         if (adType == AD_SPLASH_TYPE_YKY) {
             //游可盈
-            initYKYAd();
+            launchYKYSplash();
         } else if (adType == AD_SPLASH_TYPE_YT) {
             //优投
-            initYTAd();
+            launchYTSplash();
         }
     }
 
-    //加载游可盈广告
-    private void initYKYAd() {
-        //游可盈广告初始化
-        KleinManager.getInstance().initKleinAdSDK(this,
-                "{\"app_id\":" + Integer.parseInt(ad.getThird_app_id()) + ",\"app_bundle\":\"abc.kfzs.com\",\"app_version\":\"6.3.1\",\"is_debug\":" + BuildConfig.DEBUG + "}",
-                new KleinResponseCallback() {
-                    @Override
-                    public void onSuccess(int code) {
-                        if (BuildConfig.DEBUG)
-                            G.showToast("游可赢广告初始化:init onSuccess : " + code);
-                        //code:KLAdEvent_InitSuccess = 800; // 宿主初始化成功
-                        String data = "{\"placements\":[{\"pos_id\":" + ad.getThird_ad_id() + ",\"ad_count\":1}]}";
-                        //"{\"placements\":[{\"pos_id\":" + posId + ",\"ad_count\":1}]}";
-                        KleinManager.getInstance().prepareAD(
-                                getApplicationContext(),
-                                data,
-                                5000,
-                                true,
-                                new KleinResponseCallback() {
-                                    @Override
-                                    public void onSuccess(int i) {
-                                        if (BuildConfig.DEBUG)
-                                            Log.d("!!!!!Success", String.valueOf(i));
-                                    }
 
-                                    @Override
-                                    public void onFail(int i) {
-                                        if (BuildConfig.DEBUG)
-                                            Log.d("!!!!!Fail", String.valueOf(i));
-                                    }
-
-                                    @Override
-                                    public void onEvent(int i) {
-                                        if (BuildConfig.DEBUG)
-                                            Log.d("!!!!!Event", String.valueOf(i));
-                                        switch (i) {
-                                            case KLSplashAdEvent_AdPlayCompletion:
-                                            case KLSplashAdEvent_AdShowFinish:
-                                            case KLSplashAdEvent_AdSkip:
-                                                sendHandlerMessages(0);
-                                                break;
-                                        }
-                                    }
-                                }
-                        );
-                    }
 
+    //展示游可盈广告
+    private void launchYKYSplash(){
+        String data = "{\"placements\":[{\"pos_id\":" + ad.getThird_ad_id() + ",\"ad_count\":1}]}";
+        //"{\"placements\":[{\"pos_id\":" + posId + ",\"ad_count\":1}]}";
+        KleinManager.getInstance().prepareAD(
+                getApplicationContext(),
+                data,
+                5000,
+                true,
+                new KleinResponseCallback() {
                     @Override
-                    public void onFail(int code) {
+                    public void onSuccess(int i) {
                         if (BuildConfig.DEBUG)
-                            G.showToast("游可赢广告初始化:init onFail : " + code);
-                        //code:KLAdEvent_InitError = 801; // 宿主初始化错误
+                            Log.d("!!!!!Success", String.valueOf(i));
                     }
 
                     @Override
-                    public void onEvent(int code) {
-                        // 初始化不会回调
+                    public void onFail(int i) {
                         if (BuildConfig.DEBUG)
-                            G.showToast("游可赢广告事件:init onSuccess : " + code);
+                            Log.d("!!!!!Fail", String.valueOf(i));
                     }
-                });
-
-    }
 
-    //加载优投广告
-    private void initYTAd() {
-        JasmineEngine.getInstance(this).init(
-                ad.getThird_app_id(),
-                Integer.parseInt(ad.getThird_ad_id()),
-                new JasmineEngine.InitCallBack() {
                     @Override
-                    public void initSuccess() {
-                        LogUtils2.info("initSuccess");
-                        launchYTSplash();
-                    }
-
-                    @Override
-                    public void initFailed(String err) {
-                        LogUtils2.info("initFailed:" + err);
+                    public void onEvent(int i) {
+                        if (BuildConfig.DEBUG)
+                            Log.d("!!!!!Event", String.valueOf(i));
+                        switch (i) {
+                            case KLSplashAdEvent_AdShowSucc:
+                                if (!aded) {
+                                    AdHelper.stat(ad.getAd_id(), 1, ad.getAd_type());
+                                    aded = true;
+                                }
+                                break;
+                            case KLSplashAdEvent_AdTap:
+                                AdHelper.stat(ad.getAd_id(), 2, ad.getAd_type());
+                                break;
+                            case KLSplashAdEvent_AdPlayCompletion:
+                            case KLSplashAdEvent_AdShowFinish:
+                            case KLSplashAdEvent_AdSkip:
+                                sendHandlerMessages(0);
+                                break;
+                        }
                     }
-                });
+                }
+        );
     }
 
     //展示优投开屏广告(新增boolean state:false----定值) 重要 mForceGoMain跳转主页 请参照此方法调用,否则可能导致广告展示链路断开 导致收益下降!!!
     private void launchYTSplash() {
         flSplashYT.setVisibility(View.VISIBLE);
-        new SplashEngine(SplashAct.this,false, new SplashEngine.SplashAdCallBack() {
+        new SplashEngine(SplashAct.this, false, new SplashEngine.SplashAdCallBack() {
             @Override
             public void onSplashClick() {
                 Log.i("jasmine-ad", "点击广告");
+                AdHelper.stat(ad.getAd_id(), 2, ad.getAd_type());
+                sendHandlerMessages(0);
             }
 
             @Override
@@ -270,6 +236,10 @@ public class SplashAct extends BaseActivity {
             @Override
             public void onSplashShow() {
                 Log.i("jasmine-ad", "展示广告");
+                if (!aded) {
+                    AdHelper.stat(ad.getAd_id(), 1, ad.getAd_type());
+                    aded = true;
+                }
                 //mHasLoaded = true;
                 mHandler.removeCallbacksAndMessages(null);
             }
@@ -291,28 +261,21 @@ public class SplashAct extends BaseActivity {
 
 
     //从服务端拉取广告信息
-    private void fetchAdvertisement(boolean shouldLoad) {
+    private void fetchAdvertisement() {
         CommonUtil.getInstance().refreshAds((ret, list) -> {
             if (ret) {
-                if (shouldLoad) {
-                    ad = DDProviderHelper.getInstance().getSheepAd(SheepAd.FORM_SPLASH);
-                    loadAdvertising();
-                    if (ad == null) sendHandlerMessages(2000);
-                }
-            } else {
-                if (shouldLoad) sendHandlerMessages(2000);
+                ad = DDProviderHelper.getInstance().getSheepAd(SheepAd.FORM_SPLASH);
             }
         });
     }
 
-    //加载广告
-    private void loadAdvertising() {
+    //加载自己的广告
+    private void loadSheepAdvertising() {
         if (this.isDestroyed()) return;
         if (!aded) {
             AdHelper.stat(ad.getAd_id(), 1);
             aded = true;
         }
-
         if (ad.isImage()) {
             Glide.with(this).load(ad.getAd_img()).into(splash_image_view);
             ViewUtil.setVisibility(splash_video_view, View.GONE);

+ 6 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/helper/AdHelper.java

@@ -71,15 +71,19 @@ public class AdHelper {
         stat(idPara, type);
     }
 
-    public static void stat(long adId, int type) {
+    public static void stat(long adId,int type){
+        stat(adId,type,1);
+    }
+
+    public static void stat(long adId, int type,int adType) {
         JSONObject json = new JSONObject();
         json.put("app_advertising_id", adId);
         json.put("type", type);
+        json.put("ad_type", adType);
         SheepApp.getInstance().getNetComponent().getApiService().statAdAction(json)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-
                     @Override
                     public void onNext(BaseMessage baseMessage) {
 

+ 86 - 13
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -19,12 +19,17 @@ import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
 import com.bumptech.glide.Glide;
 import com.danikula.videocache.HttpProxyCacheServer;
+import com.jasmine.cantaloupe.engine.JasmineEngine;
+import com.jasmine.cantaloupe.utils.LogUtils2;
 import com.kfzs.cfyl.share_library.util.ContextHolder;
 import com.liulishuo.okdownload.OkDownload;
 import com.liulishuo.okdownload.core.dispatcher.DownloadDispatcher;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.ThirdAdsConfigEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.module.login.AccountConsistenceAct;
 import com.sheep.gamegroup.module.login.LoginAct;
 import com.sheep.gamegroup.module.qrcode.FaceWithQRActivity;
@@ -48,15 +53,7 @@ import com.sheep.gamegroup.util.SheepDownloadConnection;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.TextToSpeechUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
-import com.sheep.gamegroup.view.activity.ActBindMobileRegister;
-import com.sheep.gamegroup.view.activity.ActPay;
-import com.sheep.gamegroup.view.activity.ChangeTelAct;
-import com.sheep.gamegroup.view.activity.GameCertificationActivity;
-import com.sheep.gamegroup.view.activity.MiddleSchemeAct;
-import com.sheep.gamegroup.view.activity.RealNameAuthenAct;
-import com.sheep.gamegroup.view.activity.RechargeAct;
-import com.sheep.gamegroup.view.activity.RechargeResultAct;
-import com.sheep.gamegroup.view.activity.SplashAct;
+import com.sheep.gamegroup.view.activity.*;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 import com.sheep.jiuyan.samllsheep.service.DownloadService;
 import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
@@ -65,6 +62,8 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.shuyu.gsyvideoplayer.player.PlayerFactory;
 import com.tencent.bugly.Bugly;
 import com.tencent.bugly.beta.Beta;
+import com.tencent.klevin.KleinManager;
+import com.tencent.klevin.base.callback.KleinResponseCallback;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.tencent.smtt.sdk.QbSdk;
@@ -73,13 +72,11 @@ import com.stmsdk.TMSDKContext;
 import com.umeng.commonsdk.UMConfigure;
 import com.umeng.socialize.PlatformConfig;
 import com.youmi.android.offer.YmConfig;
-
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import org.xutils.x;
-
 import java.lang.ref.WeakReference;
-
 import cn.jpush.android.api.JPushInterface;
-import io.reactivex.functions.Consumer;
 import io.reactivex.plugins.RxJavaPlugins;
 import ren.yale.android.cachewebviewlib.WebViewCacheInterceptor;
 import ren.yale.android.cachewebviewlib.WebViewCacheInterceptorInst;
@@ -237,12 +234,88 @@ public class SheepApp extends MultiDexApplication {
                 }
             });
 
+            /*三方广告SDK接入,游可盈、优投等*/
+            initThirdAd();
+
             //屏幕dp获取
             screenDensity = getResources().getDisplayMetrics().densityDpi;
 
         }
     }
 
+    //初始化三方广告SDK
+    private void initThirdAd(){
+        SheepApp.getInstance().getNetComponent()
+                .getApiService()
+                .commonConfig("third_ad")
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(this) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage.getMsg() + "");
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        ThirdAdsConfigEntity thirdAdsConfigEntity = baseMessage.getData(ThirdAdsConfigEntity.class);
+                        initYKYAd(thirdAdsConfigEntity.getYkyConfig().getAppid());
+                        initYTAd(thirdAdsConfigEntity.getYtConfig().getAppid(),thirdAdsConfigEntity.getYtConfig().getAd_id());
+                    }
+                });
+    }
+
+    //加载游可盈广告
+    private void initYKYAd(String appId) {
+        //游可盈广告初始化
+        KleinManager.getInstance().initKleinAdSDK(
+                this,
+                "{\"app_id\":" + Integer.parseInt(appId) + ",\"app_bundle\":\"abc.kfzs.com\",\"app_version\":\"6.3.1\",\"is_debug\":" + BuildConfig.DEBUG + "}",
+                new KleinResponseCallback() {
+                    @Override
+                    public void onSuccess(int code) {
+                        if (BuildConfig.DEBUG)
+                            G.showToast("游可赢广告初始化:init onSuccess : " + code);
+                        //code:KLAdEvent_InitSuccess = 800; // 宿主初始化成功
+
+                    }
+
+                    @Override
+                    public void onFail(int code) {
+                        if (BuildConfig.DEBUG)
+                            G.showToast("游可赢广告初始化:init onFail : " + code);
+                        //code:KLAdEvent_InitError = 801; // 宿主初始化错误
+                    }
+
+                    @Override
+                    public void onEvent(int code) {
+                        // 初始化不会回调
+                        if (BuildConfig.DEBUG)
+                            G.showToast("游可赢广告事件:init onSuccess : " + code);
+                    }
+                });
+
+    }
+
+    //加载优投广告
+    private void initYTAd(String appId,String adId) {
+        JasmineEngine.getInstance(this).init(
+                appId,
+                Integer.parseInt(adId),
+                new JasmineEngine.InitCallBack() {
+                    @Override
+                    public void initSuccess() {
+                        LogUtils2.info("initSuccess");
+
+                    }
+
+                    @Override
+                    public void initFailed(String err) {
+                        LogUtils2.info("initFailed:" + err);
+                    }
+                });
+    }
+
     /**
      * https://bugly.qq.com/v2/crash-reporting/crashes/0dd998212c/21541?pid=1
      * #21541 android.os.FileUriExposedException