From 355fe96b2a4c7821256d9e8828d2cb9539904878 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 05 五月 2022 19:29:16 +0800
Subject: [PATCH] 功能完善

---
 android/library-ad/src/main/java/com/demo/library_ad/AdUtil.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 1 deletions(-)

diff --git a/android/library-ad/src/main/java/com/demo/library_ad/AdUtil.java b/android/library-ad/src/main/java/com/demo/library_ad/AdUtil.java
index 2a615bb..5386f95 100644
--- a/android/library-ad/src/main/java/com/demo/library_ad/AdUtil.java
+++ b/android/library-ad/src/main/java/com/demo/library_ad/AdUtil.java
@@ -3,12 +3,23 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 
+import com.bytedance.sdk.openadsdk.TTAdConfig;
 import com.bytedance.sdk.openadsdk.TTAdSdk;
 import com.demo.lib.common.util.common.StringUtils;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.qq.e.comm.managers.GDTAdSdk;
+import com.qq.e.comm.managers.setting.GlobalSetting;
 
+import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
+
+import java.lang.reflect.Type;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 public class AdUtil {
 
@@ -70,8 +81,32 @@
         String config = share.getString("config", "");
         if (!StringUtils.isEmpty(config)) {//涓囦竴娌¤缃捣灏辩敤骞跨偣閫�
             try {
+                Type type = new TypeToken<List<TypeProbability>>() {
+                }.getType();
+
                 JSONObject object = new JSONObject(config);
-                return AD_TYPE.valueOf(object.optJSONObject(positionName).optString("type"));
+                JSONArray array = object.optJSONArray(positionName);
+                if (array == null) {
+                    return null;
+                }
+                List<TypeProbability> typeList = new Gson().fromJson(array.toString(), type);
+                int count = 0;
+                Map<AD_TYPE, int[]> map = new HashMap<>();
+                for (TypeProbability probability : typeList) {
+                    int olcCount = count;
+                    count += probability.getWeight();
+                    map.put(probability.getType(), new int[]{olcCount, count});
+                }
+                int random = (int) (Math.random() * count);
+
+                for (Iterator<AD_TYPE> its = map.keySet().iterator(); its.hasNext(); ) {
+                    AD_TYPE t = its.next();
+                    int[] space = map.get(t);
+                    if (space[0] <= random && random < space[1]) {
+                        return t;
+                    }
+                }
+                return null;
             } catch (JSONException e) {
                 e.printStackTrace();
             } catch (Exception e1) {
@@ -81,4 +116,58 @@
         return null;
     }
 
+
+    /**
+     * 璁剧疆涓�у寲鎺ㄨ崘骞垮憡
+     *
+     * @param recommend
+     */
+    public static void setPersonalRecommend(boolean recommend) {
+        setPersonalRecommendCSJ(recommend);
+        //骞跨偣閫氫釜鎬у寲骞垮憡鍏抽棴
+        GlobalSetting.setPersonalizedState(recommend ? 0 : 1);
+    }
+
+    //绌垮北鐢�
+    private static void setPersonalRecommendCSJ(boolean recommend) {
+        String content = "";
+        try {
+            JSONArray jsonArray = new JSONArray();
+            JSONObject personalObject = new JSONObject();
+            personalObject.put("name", "personal_ads_type");
+            personalObject.put("value", recommend ? "1" : "0");
+            jsonArray.put(personalObject);
+            content = jsonArray.toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        TTAdConfig ttAdConfig = new TTAdConfig.Builder()
+                .data(content)
+                .build();
+        TTAdSdk.updateAdConfig(ttAdConfig);
+    }
+
+
+    class TypeProbability {
+        AD_TYPE type;
+        int weight;
+
+        public AD_TYPE getType() {
+            return type;
+        }
+
+        public void setType(AD_TYPE type) {
+            this.type = type;
+        }
+
+        public int getWeight() {
+            return weight;
+        }
+
+        public void setWeight(int weight) {
+            this.weight = weight;
+        }
+    }
+
+
 }

--
Gitblit v1.8.0