From ec7c0c687f7946d8a314643bcfb45f5c388d2187 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 27 九月 2023 16:08:45 +0800
Subject: [PATCH] 0312 抖音sdk最终版本; 在unity端 有对SdkProject/library/libs/humesdk-1.0.0.aar进行加载

---
 SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java                      |  178 +++++++++++++-
 SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java                      |   44 ++-
 SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java                          |   49 +--
 Channel/Android/hygame/release/libs/library-release-hygame.aar                              |    0 
 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java |   65 ++--
 SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java               |  137 +++++-----
 SdkProject/channel/hygame/build.gradle                                                      |   13 +
 SdkProject/channel/hygame/deps.gradle                                                       |   16 +
 Channel/Android/hygame/debug/libs/library-debug-hygame.aar                                  |    0 
 SdkProject/library/libs/humesdk-1.0.0.aar                                                   |    0 
 SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java               |   35 +-
 SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java                |   87 +++---
 SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java                           |    2 
 SdkProject/gradle.properties                                                                |   42 +-
 SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java                          |    5 
 SdkProject/channel/hygame/AndroidManifest.xml                                               |    2 
 16 files changed, 424 insertions(+), 251 deletions(-)

diff --git a/Channel/Android/hygame/debug/libs/library-debug-hygame.aar b/Channel/Android/hygame/debug/libs/library-debug-hygame.aar
index 2d21f44..59fa34a 100644
--- a/Channel/Android/hygame/debug/libs/library-debug-hygame.aar
+++ b/Channel/Android/hygame/debug/libs/library-debug-hygame.aar
Binary files differ
diff --git a/Channel/Android/hygame/release/libs/library-release-hygame.aar b/Channel/Android/hygame/release/libs/library-release-hygame.aar
index acf74b1..8789b17 100644
--- a/Channel/Android/hygame/release/libs/library-release-hygame.aar
+++ b/Channel/Android/hygame/release/libs/library-release-hygame.aar
Binary files differ
diff --git a/SdkProject/channel/hygame/AndroidManifest.xml b/SdkProject/channel/hygame/AndroidManifest.xml
index a657cef..66e75a0 100644
--- a/SdkProject/channel/hygame/AndroidManifest.xml
+++ b/SdkProject/channel/hygame/AndroidManifest.xml
@@ -4,10 +4,8 @@
     package="com.secondworld.sdk">
 
     <uses-permission android:name="android.permission.GET_TASKS" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
diff --git a/SdkProject/channel/hygame/build.gradle b/SdkProject/channel/hygame/build.gradle
index c8f58a8..aeb0d1a 100644
--- a/SdkProject/channel/hygame/build.gradle
+++ b/SdkProject/channel/hygame/build.gradle
@@ -1,4 +1,15 @@
 //褰撳墠鑴氭湰涓烘笭閬撶殑宸紓鍖栭厤缃�
+allprojects {
+    repositories {
+        maven {
+            url 'https://artifact.bytedance.com/repository/Volcengine/'
+        }
+        flatDir {
+            dirs 'libs'
+        }
+    }
+}
+
 dependencies {
 //    implementation project(path: ':quick')
-}
\ No newline at end of file
+}
diff --git a/SdkProject/channel/hygame/deps.gradle b/SdkProject/channel/hygame/deps.gradle
index 124a6b8..e74d7a6 100644
--- a/SdkProject/channel/hygame/deps.gradle
+++ b/SdkProject/channel/hygame/deps.gradle
@@ -1 +1,15 @@
-//姝よ剼鏈负娓犻亾鐨勭涓夋柟杩滅▼渚濊禆搴撻厤缃紝浼氬鍒跺埌unity涓敤浜庢瀯寤�
\ No newline at end of file
+//姝よ剼鏈负娓犻亾鐨勭涓夋柟杩滅▼渚濊禆搴撻厤缃紝浼氬鍒跺埌unity涓敤浜庢瀯寤�
+dependencies {
+    //鍦╞uild.gradle鏂囦欢鐨刣ependencies涓紩鍏DK锛岄泦鎴怢ite鐗堟湰
+// Applog 涓婃姤缁勪欢锛堝繀椤伙級
+    implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.15.4'
+// 鍟嗕笟鍖栫粍浠讹紙蹇呴』锛� 6.14.2 浠ヤ笂鐗堟湰鍟嗕笟鍖栫粍浠剁嫭绔嬶紝娉細蹇呴』鎺ュ叆浠ュ厤骞冲彴闄愬埗搴旂敤涓婁紶
+    implementation 'com.bytedance.applog:RangersAppLog-All-convert:6.15.4'
+
+// 璋冭瘯宸ュ叿锛堝彲閫夛級
+    //debugImplementation 'com.bytedance.applog:RangersAppLog-DevTools:3.0.0'
+    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61'
+
+    compile(name: 'humesdk-1.0.0', ext: 'aar')
+    //implementation(name: 'humesdk-1.0.0', ext: 'aar')
+}
\ No newline at end of file
diff --git a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java
index f351123..01ca96f 100644
--- a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java
+++ b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java
@@ -5,7 +5,7 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        //QuickSdkMgr.I.register("40450025922275820036898902533267","31232581");
+
     }
 
     @Override
diff --git a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java
index ae090aa..8b5816b 100644
--- a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java
+++ b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java
@@ -20,6 +20,8 @@
 //        QuickSdkMgr.I.requestPermissions(activity);
         //QuickSdkMgr.I.init(activity);
         com.quicksdk.Sdk.getInstance().onCreate(activity);
+        LogUtil.d("BtGameMain", "鍚姩鐨勬槸 BtGameMain锛�");
+        PlatformDiff.I.OnCreate(GameAppProxy.app.getApplicationContext());
     }
 
     @Override
@@ -95,4 +97,7 @@
         }
         return super.onKeyDown(keyCode, event);
     }
+
+
+
 }
diff --git a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java
index 49759c5..eedcd0c 100644
--- a/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java
+++ b/SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java
@@ -1,19 +1,159 @@
-                                               package com.secondworld.sdk;
-
-public class BtGamePlatform extends PlatformDiff {
-
-    @Override
-    public String platformName() {
-        return "hygame";
-    }
-
-    @Override
-    public  String platformProductCode()  {
-        return "84324345567485956654600331002691";
-    }
-
-    @Override
-    public  String platformProductKey() {
-        return "12355811";
-    }
-}
+package com.secondworld.sdk;
+
+import android.Manifest;
+import android.content.Context;
+import android.widget.Toast;
+
+import com.bytedance.applog.AppLog;
+import com.bytedance.applog.InitConfig;
+import com.bytedance.applog.game.GameReportHelper;
+import com.bytedance.applog.util.UriConstants;
+import com.bytedance.hume.readapk.HumeSDK;
+import com.quicksdk.User;
+import com.secondworld.sdk.utils.LogUtil;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class BtGamePlatform extends PlatformDiff {
+
+    @Override
+    public String platformName() {
+        return "hygame";
+    }
+
+    @Override
+    public  String platformProductCode()  {
+        return "84324345567485956654600331002691";
+    }
+
+    @Override
+    public  String platformProductKey() {
+        return "12355811";
+    }
+
+    @Override
+    public void CreateRoleEvent(String roleID)
+    {
+        GameReportHelper.onEventCreateGameRole(roleID);
+    }
+    @Override
+    public void PayEvent(String title, String goodsID, int mount)
+    {
+        //鍐呯疆浜嬩欢 鈥滄敮浠樷�濓紝灞炴�э細鍟嗗搧绫诲瀷锛屽晢鍝佸悕绉帮紝鍟嗗搧ID锛屽晢鍝佹暟閲忥紝鏀粯娓犻亾锛屽竵绉嶏紝鏄惁鎴愬姛锛堝繀浼狅級锛岄噾棰濓紙蹇呬紶锛�
+        // 浠樿垂閲戦鍗曚綅涓哄厓
+        GameReportHelper.onEventPurchase("gift", title,
+                goodsID,1, "youxitu","楼", true, mount);
+
+    }
+
+    @Override
+    public void PrePayEvent(String title, String goodsID, int mount)
+    {
+        //鍏抽敭琛屼负
+        JSONObject paramsObj = new JSONObject();
+        try {
+            paramsObj.put("origin_event", "prepay"); // 娣诲姞鍘熷浜嬩欢鍚嶇О鍙傛暟
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        AppLog.onEventV3("game_addiction", paramsObj);
+    }
+
+    @Override
+    public void OnCreate(Context var0)
+    {
+        String channel = "dy";
+
+        /* 鍒濆鍖朣DK寮�濮� */
+        // 绗竴涓弬鏁癆PPID: 鍙傝��2.1鑺傝幏鍙�
+        // 绗簩涓弬鏁癈HANNEL: 濉啓娓犻亾淇℃伅锛岃娉ㄦ剰涓嶈兘涓虹┖
+        final InitConfig config = new InitConfig("520784", channel);
+        // 璁剧疆鏁版嵁涓婇�佸湴鍧�
+        config.setUriConfig(UriConstants.DEFAULT);
+        config.setImeiEnable(false);//寤鸿鍏冲仠鑾峰彇IMEI锛堝嚭浜庡悎瑙勮�冭檻锛�
+        config.setAutoTrackEnabled(true); // 鍏ㄥ煁鐐瑰紑鍏筹紝true寮�鍚紝false鍏抽棴
+        config.setLogEnable(false); // true:寮�鍚棩蹇楋紝鍙傝��4.3鑺傝缃甽ogger锛宖alse:鍏抽棴鏃ュ織
+        AppLog.setEncryptAndCompress(true); // 鍔犲瘑寮�鍏筹紝true寮�鍚紝false鍏抽棴
+        config.setMacEnable(false);
+        config.setOperatorInfoEnabled(false);
+        config.setEnablePlay(true);
+        config.setAutoStart(false);
+        //AppLog.init(var0, config, GameActivityProxy.I.activity);
+        AppLog.init(var0, config);
+        /* 鍒濆鍖朣DK缁撴潫 */
+
+
+    }
+
+
+    @Override
+    public String[] platformPermission()
+    {
+        //return new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE};
+        return new String[] {};
+    }
+
+    @Override
+    public void RegisterEvent(String platform) {
+        GameReportHelper.onEventRegister(platform,true);
+        Login();
+    }
+
+    @Override
+    public void Login()
+    {
+        switch (QuickSdkMgr.I.sdkInitState) {
+            case FAILED:
+            {
+                if (GameActivityProxy.I.activity == null)
+                    return;
+                if (QuickSdkMgr.I.hasPermissions(GameActivityProxy.I.activity)) {
+                    //init(BtGameMain.I.activity);
+                    Toast.makeText(GameAppProxy.app, "寮傚父璇烽噸鍚父鎴�", Toast.LENGTH_LONG).show();
+                }
+                break;
+            }
+            case SUCCEED: {
+                //User.getInstance().login(GameActivityProxy.I.activity);
+                GameActivityProxy.I.activity.runOnUiThread(new Runnable()
+                {
+                    @Override
+                    public void run()
+                    {
+                        User.getInstance().login(GameActivityProxy.I.activity);
+                    }
+                });
+                break;
+            }
+            case UNKNOWN:
+            {
+                QuickSdkMgr.I.sdkInitState = PlatformSdkMgr.SdkInitState.LOADING;
+                break;
+            }
+            case LOADING: {
+                //Toast.makeText(GameAppProxy.app, "璐﹀彿鐧诲綍鎴愬姛鍚庯紝璇峰啀娆$偣鍑昏繘鍏ユ父鎴�", Toast.LENGTH_LONG).show();
+                QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
+                break;
+            }
+        }
+    }
+    @Override
+    public void StartRequestPermission()
+    {
+        //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
+
+        //鑾峰彇娓犻亾鍚嶇О context涓哄涓荤殑context
+        String channel = HumeSDK.getChannel(GameAppProxy.app.getApplicationContext());
+        if (channel == null || channel.isEmpty())
+        {
+            channel = "dy";
+        }
+        //鑾峰彇humeSDK鐗堟湰鍙�
+        String version = HumeSDK.getVersion();
+
+        LogUtil.i("HumeSDK", "DYStart " + channel + " "+ version);
+        AppLog.getInitConfig().setChannel(channel);
+        AppLog.start();
+    }
+}
diff --git a/SdkProject/gradle.properties b/SdkProject/gradle.properties
index d3fcc52..e04dfee 100644
--- a/SdkProject/gradle.properties
+++ b/SdkProject/gradle.properties
@@ -1,21 +1,21 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app"s APK  路
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=false
-## Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=false
-#褰撳墠鏋勫缓鐨勬笭閬撳悕绉�
-CHANNEL_NAME=hygame2
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK  路
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=false
+## Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=false
+#褰撳墠鏋勫缓鐨勬笭閬撳悕绉�
+CHANNEL_NAME=hygame
diff --git a/SdkProject/library/libs/humesdk-1.0.0.aar b/SdkProject/library/libs/humesdk-1.0.0.aar
new file mode 100644
index 0000000..2db4091
--- /dev/null
+++ b/SdkProject/library/libs/humesdk-1.0.0.aar
Binary files differ
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java b/SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java
index 31b6165..741d81c 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java
@@ -1,12 +1,32 @@
-package com.secondworld.sdk;
-
-public abstract class PlatformDiff {
-
-    public static PlatformDiff I;
-
-    //骞冲彴鍚嶇О
-    public abstract String platformName();
-    public abstract String platformProductCode();
-    public abstract String platformProductKey();
-
-}
+package com.secondworld.sdk;
+
+import android.content.Context;
+
+public abstract class PlatformDiff {
+
+    public static PlatformDiff I;
+
+    //骞冲彴鍚嶇О
+    public abstract String platformName();
+    public abstract String platformProductCode();
+    public abstract String platformProductKey();
+
+    public abstract void CreateRoleEvent(String roleID);  //鍒涘缓瑙掕壊鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐨勬眹鎶ユ帴鍙d笉鍚�
+    public abstract void PayEvent(String title, String goodsID, int mount); //鏀粯鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐨勬眹鎶ユ帴鍙d笉鍚�
+    public abstract void PrePayEvent(String title, String goodsID, int mount); //鍙戣捣鏀粯璁㈠崟鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐨勬眹鎶ユ帴鍙d笉鍚�
+
+    public abstract void OnCreate(Context var0); //鍚姩鎴愬姛鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐨勬眹鎶ユ帴鍙d笉鍚�
+
+    public abstract String[] platformPermission(); //璇锋眰鐨勬潈闄愮被鍨�
+
+    public abstract void RegisterEvent(String platform); //娉ㄥ唽鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐨勬眹鎶ユ帴鍙d笉鍚�
+
+    public abstract void Login(); //鐧诲綍鍚庨渶瑕佸鐞嗙殑閫昏緫锛屽涓嶅悓sdk鐧诲綍娴佺▼涓嶅悓
+
+    //璇锋眰鏉冮檺 甯歌quickSDK鐧诲綍娴佺▼ 1.娓告垙鏂瑰脊鍑洪殣绉佹斂绛栫瓑 2.娓告垙鏂硅姹傛潈闄愶紝鎷掔粷鏉冮檺涔熷彲杩涘叆涓嬩竴姝� 3.鍒濆鍖杚uicksdk 4.鐧诲綍
+    //鍔犲叆鎶栭煶sdk鍚庯紝鎶栭煶蹇呴』鍦ㄧ敓鍛藉懆鏈熷垵濮嬪寲锛屽湪鏉冮檺璇锋眰鍚庡惎鍔紝鎸夎瀹氭祦绋嬩慨鏀逛负
+    // 1.娓告垙鏂瑰脊鍑洪殣绉佹斂绛栫瓑
+    // 2.蹇呴』鍦ㄧ敤鎴蜂富鍔ㄤ氦浜掑簲鐢ㄥ満鏅墠鑳借姹傛潈闄� 濡傚湪鐧诲綍鐣岄潰鍑虹幇鐐瑰嚮鐧诲綍鎸夐挳鍚庯紝鍒濆鍖杚uicksdk
+    // 3.鐧诲綍
+    public abstract void StartRequestPermission(); //璇锋眰鏉冮檺
+}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
index 6295969..30d3f75 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
@@ -1,33 +1,32 @@
-package com.secondworld.sdk.command;
-
-import com.secondworld.sdk.GameActivityProxy;
-import com.secondworld.sdk.PermissionManager;
-import com.secondworld.sdk.QuickSdkMgr;
-import com.secondworld.sdk.utils.CodeU2A;
-import com.secondworld.sdk.utils.LogUtil;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-public class CmdRequestPermissionStart implements ICommand {
-
-    @Override
-    public int getCode() {
-        return CodeU2A.RequestPermissionStart;
-    }
-
-    @Override
-    public void process(JSONObject json) throws JSONException {
-        //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
-
-        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
-        {
-            @Override
-            public void run()
-            {
-                LogUtil.i("SdkManager", "CmdRequestPermissionStart process");
-                QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
-            }
-        });
-    }
-}
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.GameActivityProxy;
+import com.secondworld.sdk.PlatformDiff;
+import com.secondworld.sdk.QuickSdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+import com.secondworld.sdk.utils.LogUtil;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class CmdRequestPermissionStart implements ICommand {
+
+    @Override
+    public int getCode() {
+        return CodeU2A.RequestPermissionStart;
+    }
+
+    @Override
+    public void process(JSONObject json) throws JSONException {
+        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                LogUtil.i("SdkManager", "CmdRequestPermissionStart process");
+                //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
+                PlatformDiff.I.StartRequestPermission();
+            }
+        });
+    }
+}
diff --git a/SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java b/SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java
index 3f3cbb5..4b46510 100644
--- a/SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java
+++ b/SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java
@@ -47,22 +47,29 @@
     public String channelID;
     int REQUEST_RECORD_PERMISSION_SETTING = 110;
 
-    private boolean hasPermissions(Activity activity) {
+    public boolean hasPermissions(Activity activity) {
+        //鏉冮檺鎻愬彇鍒板悇鑷」鐩腑
 //        return (ContextCompat.checkSelfPermission(activity,
 //                Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
 //                && (ContextCompat.checkSelfPermission(activity,
 //                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
 
-        return ContextCompat.checkSelfPermission(activity,
-                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
+        String[] permissionStr = PlatformDiff.I.platformPermission();
+        for (int i = 0; i < permissionStr.length; i++)
+        {
+            if (ContextCompat.checkSelfPermission(activity, permissionStr[i]) != PackageManager.PERMISSION_GRANTED)
+            {
+                return false;
+            }
+        }
+        return true;
     }
 
     public void requestPermissions(Activity activity) {
 
         try {
             if (!hasPermissions(activity)) {
-                ActivityCompat.requestPermissions(activity, new String[]{
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestCode.QUICK);
+                ActivityCompat.requestPermissions(activity, PlatformDiff.I.platformPermission(), RequestCode.QUICK);
             }
             else
             {
@@ -119,40 +126,14 @@
 
     }
 
+
     public void init(Activity activity) {
         sdkInitState = SdkInitState.LOADING;
         Sdk.getInstance().init(activity, productCode, productKey);
     }
 
     public void login() {
-        switch (sdkInitState) {
-            case FAILED:
-            case UNKNOWN: {
-                if (GameActivityProxy.I.activity == null)
-                    return;
-                if (hasPermissions(GameActivityProxy.I.activity)) {
-                    //init(BtGameMain.I.activity);
-                    Toast.makeText(GameAppProxy.app, "寮傚父璇烽噸鍚父鎴�", Toast.LENGTH_LONG).show();
-                }
-                break;
-            }
-            case SUCCEED: {
-                //User.getInstance().login(GameActivityProxy.I.activity);
-                GameActivityProxy.I.activity.runOnUiThread(new Runnable()
-                {
-                    @Override
-                    public void run()
-                    {
-                        User.getInstance().login(GameActivityProxy.I.activity);
-                    }
-                });
-                break;
-            }
-            case LOADING: {
-                Toast.makeText(GameAppProxy.app, "姝e湪鍒濆鍖栦腑锛岃绋嶇瓑锛�", Toast.LENGTH_LONG).show();
-                break;
-            }
-        }
+        PlatformDiff.I.Login();
     }
 
     public void loginOut() {
@@ -247,8 +228,8 @@
                 sdkInitState = SdkInitState.SUCCEED;
                 LogUtil.debug("SdkManager", "鍒濆鍖栨垚鍔�");
                 UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
+                PlatformDiff.I.RegisterEvent("youxitu");
             }
-
             @Override
             public void onFailed(String message, String trace) {
                 //鍒濆鍖栧け璐�
diff --git a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java
index ffacb91..eaa2553 100644
--- a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java
+++ b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java
@@ -1,43 +1,44 @@
-package com.secondworld.sdk.command;
-
-import com.quicksdk.entity.GameRoleInfo;
-import com.secondworld.sdk.QuickSdkMgr;
-import com.secondworld.sdk.utils.CodeU2A;
-
-import org.json.JSONObject;
-
-public class CmdCreateRole implements ICommand {
-    @Override
-    public int getCode() {
-        return CodeU2A.CreateRole;
-    }
-
-    @Override
-    public void process(JSONObject json) throws Exception {
-        GameRoleInfo roleInfo = new GameRoleInfo();
-        roleInfo.setServerID(json.getString("sid"));
-        roleInfo.setServerName(json.getString("serverName"));
-        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
-        roleInfo.setGameRoleID(json.getString("roleID"));
-        roleInfo.setGameBalance(json.getString("money"));
-        roleInfo.setVipLevel( json.getString("vipLevel"));  //璁剧疆褰撳墠鐢ㄦ埛vip绛夌骇锛屽繀椤讳负鏁板瓧鏁村瀷瀛楃涓�,璇峰嬁浼�"vip1"绛夌被浼煎瓧绗︿覆
-        roleInfo.setGameUserLevel(json.getString("level"));//璁剧疆娓告垙瑙掕壊绛夌骇
-        String familyName = json.getString("familyName").trim().replace(" ","");
-        if (familyName.isEmpty())
-        {
-            familyName = "default";
-        }
-        roleInfo.setPartyName(familyName);//璁剧疆甯淳鍚嶇О
-        roleInfo.setRoleCreateTime( json.getString("createTime")); //UC锛屽綋涔愪笌1881锛孴T娓犻亾蹇呬紶锛屽�间负10浣嶆暟鏃堕棿鎴�
-
-        roleInfo.setPartyId(json.getString("familyID")); //璁剧疆甯淳id锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setGameRoleGender("鐢�");
-        roleInfo.setGameRolePower(json.getString("fightPower")); //璁剧疆瑙掕壊鎴樺姏锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setPartyRoleId("11"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨刬d
-        roleInfo.setPartyRoleName("甯富"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨勫悕绉�
-        roleInfo.setProfessionId("-1"); //璁剧疆瑙掕壊鑱屼笟id锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setProfession("-1"); //璁剧疆瑙掕壊鑱屼笟鍚嶇О
-        roleInfo.setFriendlist("鏃�"); //璁剧疆濂藉弸鍏崇郴鍒楄〃锛屾牸寮忚鍙傝�冿細http://open.quicksdk.net/help/detail/aid/190
-        QuickSdkMgr.I.setGameRoleInfo(roleInfo, true);
-    }
-}
+package com.secondworld.sdk.command;
+
+import com.quicksdk.entity.GameRoleInfo;
+import com.secondworld.sdk.PlatformDiff;
+import com.secondworld.sdk.QuickSdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+import org.json.JSONObject;
+
+public class CmdCreateRole implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.CreateRole;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        GameRoleInfo roleInfo = new GameRoleInfo();
+        roleInfo.setServerID(json.getString("sid"));
+        roleInfo.setServerName(json.getString("serverName"));
+        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
+        roleInfo.setGameRoleID(json.getString("roleID"));
+        roleInfo.setGameBalance(json.getString("money"));
+        roleInfo.setVipLevel( json.getString("vipLevel"));  //璁剧疆褰撳墠鐢ㄦ埛vip绛夌骇锛屽繀椤讳负鏁板瓧鏁村瀷瀛楃涓�,璇峰嬁浼�"vip1"绛夌被浼煎瓧绗︿覆
+        roleInfo.setGameUserLevel(json.getString("level"));//璁剧疆娓告垙瑙掕壊绛夌骇
+        String familyName = json.getString("familyName").trim().replace(" ","");
+        if (familyName.isEmpty())
+        {
+            familyName = "default";
+        }
+        roleInfo.setPartyName(familyName);//璁剧疆甯淳鍚嶇О
+        roleInfo.setRoleCreateTime( json.getString("createTime")); //UC锛屽綋涔愪笌1881锛孴T娓犻亾蹇呬紶锛屽�间负10浣嶆暟鏃堕棿鎴�
+
+        roleInfo.setPartyId(json.getString("familyID")); //璁剧疆甯淳id锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setGameRoleGender("鐢�");
+        roleInfo.setGameRolePower(json.getString("fightPower")); //璁剧疆瑙掕壊鎴樺姏锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setPartyRoleId("11"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨刬d
+        roleInfo.setPartyRoleName("甯富"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨勫悕绉�
+        roleInfo.setProfessionId("-1"); //璁剧疆瑙掕壊鑱屼笟id锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setProfession("-1"); //璁剧疆瑙掕壊鑱屼笟鍚嶇О
+        roleInfo.setFriendlist("鏃�"); //璁剧疆濂藉弸鍏崇郴鍒楄〃锛屾牸寮忚鍙傝�冿細http://open.quicksdk.net/help/detail/aid/190
+        QuickSdkMgr.I.setGameRoleInfo(roleInfo, true);
+        PlatformDiff.I.CreateRoleEvent(json.getString("roleID"));
+    }
+}
diff --git a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java
index 5938411..5e4a3ad 100644
--- a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java
+++ b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java
@@ -1,16 +1,19 @@
-package com.secondworld.sdk.command;
-
-import com.secondworld.sdk.utils.CodeU2A;
-
-import org.json.JSONObject;
-
-public class CmdPayFinished implements  ICommand{
-    @Override
-    public int getCode() {
-        return CodeU2A.PayFinished;
-    }
-
-    @Override
-    public void process(JSONObject json) throws Exception {
-    }
-}
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.PlatformDiff;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPayFinished implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.PayFinished;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        int money = (int) json.getDouble("money");
+        PlatformDiff.I.PayEvent("title" + money, "goodsID"+money, money);
+    }
+}
diff --git a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java
index 092964a..d142b7c 100644
--- a/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java
+++ b/SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java
@@ -1,68 +1,69 @@
-package com.secondworld.sdk.command;
-
-import com.quicksdk.entity.GameRoleInfo;
-import com.quicksdk.entity.OrderInfo;
-import com.secondworld.sdk.GameAppProxy;
-import com.secondworld.sdk.QuickSdkMgr;
-import com.secondworld.sdk.utils.CodeU2A;
-
-import org.json.JSONObject;
-
-import java.net.URLEncoder;
-
-public class CmdPlatformPay implements ICommand {
-    @Override
-    public int getCode() {
-        return CodeU2A.PlatformPay;
-    }
-
-    @Override
-    public void process(JSONObject json) throws Exception {
-
-
-        JSONObject extraData = new JSONObject();
-        extraData.put("appid", GameAppProxy.appId);
-        extraData.put("cpinfo", json.getString("cpInfo"));
-        extraData.put("cporderid", json.getString("orderId"));
-        extraData.put("serverid", json.getString("sid"));
-        extraData.put("channelID", QuickSdkMgr.I.channelID);
-
-        GameRoleInfo roleInfo = new GameRoleInfo();
-        roleInfo.setServerID(json.getString("sid"));
-        roleInfo.setServerName(json.getString("serverName"));
-        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
-        roleInfo.setGameRoleID(json.getString("roleID"));
-        roleInfo.setGameBalance(json.getString("money"));
-        roleInfo.setVipLevel(json.getString("vipLevel"));  //璁剧疆褰撳墠鐢ㄦ埛vip绛夌骇锛屽繀椤讳负鏁板瓧鏁村瀷瀛楃涓�,璇峰嬁浼�"vip1"绛夌被浼煎瓧绗︿覆
-        roleInfo.setGameUserLevel(json.getString("level"));//璁剧疆娓告垙瑙掕壊绛夌骇
-        String familyName = json.getString("familyName").trim().replace(" ","");
-        if (familyName.isEmpty())
-        {
-            familyName = "default";
-        }
-        roleInfo.setPartyName(familyName);//璁剧疆甯淳鍚嶇О
-        roleInfo.setRoleCreateTime(json.getString("createTime")); //UC锛屽綋涔愪笌1881锛孴T娓犻亾蹇呬紶锛屽�间负10浣嶆暟鏃堕棿鎴�
-
-        roleInfo.setPartyId(json.getString("familyID")); //璁剧疆甯淳id锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setGameRoleGender("鐢�");
-        roleInfo.setGameRolePower(json.getString("fightPower")); //璁剧疆瑙掕壊鎴樺姏锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setPartyRoleId("11"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨刬d
-        roleInfo.setPartyRoleName("甯富"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨勫悕绉�
-        roleInfo.setProfessionId("-1"); //璁剧疆瑙掕壊鑱屼笟id锛屽繀椤讳负鏁村瀷瀛楃涓�
-        roleInfo.setProfession("-1"); //璁剧疆瑙掕壊鑱屼笟鍚嶇О
-        roleInfo.setFriendlist("鏃�"); //璁剧疆濂藉弸鍏崇郴鍒楄〃锛屾牸寮忚鍙傝�冿細http://open.quicksdk.net/help/detail/aid/190
-
-
-        OrderInfo orderInfo = new OrderInfo();
-        orderInfo.setCpOrderID(json.getString("orderId"));
-        orderInfo.setGoodsName(json.getString("title"));//鍟嗗搧鍚嶇О锛屼笉甯︽暟閲�
-        orderInfo.setCount(1);//娓告垙甯佹暟閲�
-        orderInfo.setAmount((float) json.getDouble("mount"));
-        orderInfo.setGoodsID(json.getString("cpInfo"));
-        orderInfo.setGoodsDesc(json.getString("title"));
-        orderInfo.setExtrasParams(
-                URLEncoder.encode(extraData.toString(), "utf-8"));
-
-        QuickSdkMgr.I.pay(orderInfo, roleInfo);
-    }
-}
+package com.secondworld.sdk.command;
+
+import com.quicksdk.entity.GameRoleInfo;
+import com.quicksdk.entity.OrderInfo;
+import com.secondworld.sdk.GameAppProxy;
+import com.secondworld.sdk.PlatformDiff;
+import com.secondworld.sdk.QuickSdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+import org.json.JSONObject;
+
+import java.net.URLEncoder;
+
+public class CmdPlatformPay implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.PlatformPay;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+
+
+        JSONObject extraData = new JSONObject();
+        extraData.put("appid", GameAppProxy.appId);
+        extraData.put("cpinfo", json.getString("cpInfo"));
+        extraData.put("cporderid", json.getString("orderId"));
+        extraData.put("serverid", json.getString("sid"));
+        extraData.put("channelID", QuickSdkMgr.I.channelID);
+
+        GameRoleInfo roleInfo = new GameRoleInfo();
+        roleInfo.setServerID(json.getString("sid"));
+        roleInfo.setServerName(json.getString("serverName"));
+        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
+        roleInfo.setGameRoleID(json.getString("roleID"));
+        roleInfo.setGameBalance(json.getString("money"));
+        roleInfo.setVipLevel(json.getString("vipLevel"));  //璁剧疆褰撳墠鐢ㄦ埛vip绛夌骇锛屽繀椤讳负鏁板瓧鏁村瀷瀛楃涓�,璇峰嬁浼�"vip1"绛夌被浼煎瓧绗︿覆
+        roleInfo.setGameUserLevel(json.getString("level"));//璁剧疆娓告垙瑙掕壊绛夌骇
+        String familyName = json.getString("familyName").trim().replace(" ","");
+        if (familyName.isEmpty())
+        {
+            familyName = "default";
+        }
+        roleInfo.setPartyName(familyName);//璁剧疆甯淳鍚嶇О
+        roleInfo.setRoleCreateTime(json.getString("createTime")); //UC锛屽綋涔愪笌1881锛孴T娓犻亾蹇呬紶锛屽�间负10浣嶆暟鏃堕棿鎴�
+
+        roleInfo.setPartyId(json.getString("familyID")); //璁剧疆甯淳id锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setGameRoleGender("鐢�");
+        roleInfo.setGameRolePower(json.getString("fightPower")); //璁剧疆瑙掕壊鎴樺姏锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setPartyRoleId("11"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨刬d
+        roleInfo.setPartyRoleName("甯富"); //璁剧疆瑙掕壊鍦ㄥ府娲句腑鐨勫悕绉�
+        roleInfo.setProfessionId("-1"); //璁剧疆瑙掕壊鑱屼笟id锛屽繀椤讳负鏁村瀷瀛楃涓�
+        roleInfo.setProfession("-1"); //璁剧疆瑙掕壊鑱屼笟鍚嶇О
+        roleInfo.setFriendlist("鏃�"); //璁剧疆濂藉弸鍏崇郴鍒楄〃锛屾牸寮忚鍙傝�冿細http://open.quicksdk.net/help/detail/aid/190
+
+
+        OrderInfo orderInfo = new OrderInfo();
+        orderInfo.setCpOrderID(json.getString("orderId"));
+        orderInfo.setGoodsName(json.getString("title"));//鍟嗗搧鍚嶇О锛屼笉甯︽暟閲�
+        orderInfo.setCount(1);//娓告垙甯佹暟閲�
+        orderInfo.setAmount((float) json.getDouble("mount"));
+        orderInfo.setGoodsID(json.getString("cpInfo"));
+        orderInfo.setGoodsDesc(json.getString("title"));
+        orderInfo.setExtrasParams(
+                URLEncoder.encode(extraData.toString(), "utf-8"));
+
+        QuickSdkMgr.I.pay(orderInfo, roleInfo);
+        PlatformDiff.I.PrePayEvent(json.getString("title"), json.getString("cpInfo"), (int) json.getDouble("mount"));
+    }
+}

--
Gitblit v1.8.0