hch
2022-04-07 28df0ed0e02c4c03ab99cc62ebb9f983dc9daf68
0312 提交越南SDK 测试版本
11个文件已修改
2个文件已删除
33个文件已添加
631 ■■■■■ 已修改文件
.gradle/6.1.1/fileChanges/last-build.bin 补丁 | 查看 | 原始文档 | blame | 历史
.gradle/6.1.1/fileHashes/fileHashes.lock 补丁 | 查看 | 原始文档 | blame | 历史
.gradle/6.1.1/gc.properties 补丁 | 查看 | 原始文档 | blame | 历史
.gradle/checksums/checksums.lock 补丁 | 查看 | 原始文档 | blame | 历史
.gradle/vcs-1/gc.properties 补丁 | 查看 | 原始文档 | blame | 历史
.idea/.gitignore 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/gradle.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules/U3DRepositoryAX.iml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/VNGame/debug/libs/library-debug-VNGame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/VNGame/release/libs/library-release-VNGame.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/build.gradle 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/libs/SohaSDK.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/src/main/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/src/main/assets/client.txt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/build.gradle 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/AndroidManifest.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/config.properties 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/deps.gradle 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGameApp.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGameMain.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGamePlatform.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/MySdkMgr.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdCreateRole.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPayFinished.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformInit.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformLogin.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformLogout.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformPay.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdRoleLevelUp.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdRoleLogin.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/GoToReview.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/libs/gson-2.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/libs/okhttp-3.9.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/libs/okio-1.13.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/libs/tbs_sdk_noimpl_43799.jar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/VNGame/res/xml/filepaths.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/gradle.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/libaar/SohaSDK.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/build.gradle 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gradle/6.1.1/fileChanges/last-build.bin
Binary files differ
.gradle/6.1.1/fileHashes/fileHashes.lock
Binary files differ
.gradle/6.1.1/gc.properties
.gradle/checksums/checksums.lock
Binary files differ
.gradle/vcs-1/gc.properties
.idea/.gitignore
New file
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
.idea/gradle.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        <option name="testRunner" value="PLATFORM" />
        <option name="distributionType" value="DEFAULT_WRAPPED" />
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
        <option name="gradleJvm" value="1.8" />
        <option name="resolveModulePerSourceSet" value="false" />
        <option name="useQualifiedModuleNames" value="true" />
      </GradleProjectSettings>
    </option>
  </component>
</project>
.idea/misc.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectRootManager" version="2" project-jdk-name="1.8" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/build/classes" />
  </component>
  <component name="ProjectType">
    <option name="id" value="Android" />
  </component>
</project>
.idea/modules.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/modules/U3DRepositoryAX.iml" filepath="$PROJECT_DIR$/.idea/modules/U3DRepositoryAX.iml" />
    </modules>
  </component>
</project>
.idea/modules/U3DRepositoryAX.iml
New file
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":" />
        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
        <option name="LAST_KNOWN_AGP_VERSION" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$/../.." />
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
.idea/vcs.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
  </component>
</project>
Channel/Android/VNGame/debug/libs/library-debug-VNGame.aar
Binary files differ
Channel/Android/VNGame/release/libs/library-release-VNGame.aar
Binary files differ
SdkProject/app/build.gradle
@@ -7,7 +7,7 @@
    buildToolsVersion "30.0.2"
    defaultConfig {
        applicationId "com.sanxiagame.zmjgp"
        applicationId "com.soha.sdk.xbqy"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
@@ -31,7 +31,8 @@
    implementation project(path: ':library')
    implementation 'androidx.annotation:annotation:1.0.0'
    androidTestImplementation 'junit:junit:4.13.1'
    //noinspection GradleCompatible
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
    implementation('androidx.appcompat:appcompat:1.0.0') {
        force = true
    }
}
apply plugin: 'com.google.gms.google-services'
SdkProject/app/libs/SohaSDK.aar
Binary files differ
SdkProject/app/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:name="com.secondworld.sdk.BtGameApp"
        android:name="com.secondworld.sdk.GTGameApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
SdkProject/app/src/main/assets/client.txt
New file
@@ -0,0 +1,8 @@
{
    "app_id": "aavfddkyyt9rq2ylwkkuy4we7pzjxjvx",
    "app_id_facebook": "5041723809190298",
    "app_id_appsflyer": "4MDuMgiUXFLJVRYirfWar3",
    "client_name" : "SG349",
    "client_code": "SG349",
    "app_token_adjust": "qjqdj5hon9xc"
}
SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java
@@ -2,10 +2,11 @@
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.widget.RelativeLayout;
import com.secondworld.sdk.BtGameMain;
import androidx.annotation.NonNull;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.GameActivityProxy;
import com.secondworld.sdk.GameAppProxy;
import com.secondworld.sdk.UnityMsgHandler;
@@ -18,7 +19,7 @@
public class MainActivity extends Activity {
    private static Class<? extends GameActivityProxy> proxyClass= BtGameMain.class;
    private static Class<? extends GameActivityProxy> proxyClass= GTGameMain.class;
    GameActivityProxy proxy;
@@ -44,7 +45,7 @@
            e.printStackTrace();
            LogUtil.e("GameActivity", e);
        }
        addEvent();
        //addEvent();
    }
    private void addEvent() {
SdkProject/build.gradle
@@ -4,9 +4,11 @@
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "com.google.gms:google-services:4.3.3"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module deps.gradle files
    }
@@ -17,6 +19,9 @@
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        flatDir {
            dirs 'libs'
        }
    }
}
SdkProject/channel/VNGame/AndroidManifest.xml
New file
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.secondworld.sdk">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="com.sdp.permission.WALLET_PAY" />
    <uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <!--    GooglePay-->
    <uses-permission android:name="com.android.vending.BILLING" />
    <application
        android:name="com.soha.sdk.SohaApplication"
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true"
        tools:replace="android:name">
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>
    </application>
</manifest>
SdkProject/channel/VNGame/config.properties
New file
@@ -0,0 +1 @@
PLUGINS=
SdkProject/channel/VNGame/deps.gradle
New file
@@ -0,0 +1,7 @@
dependencies {
    implementation 'com.google.android.gms:play-services-auth:17.0.0'
    implementation "com.android.billingclient:billing:3.0.0"
    implementation 'com.facebook.android:facebook-login:9.1.0'
    implementation 'com.facebook.android:facebook-share:9.1.0'
    implementation 'com.google.android.play:core:1.8.2'
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGameApp.java
New file
@@ -0,0 +1,25 @@
package com.secondworld.sdk;
import android.app.Application;
public class GTGameApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        GameAppProxy.create(this,new GTGamePlatform());
        registerProxy();
        initSdk();
    }
    protected void registerProxy() {
        //主界面代理注册
        GameActivity.registerProxy(GTGameMain.class);
        //AppsFlyerUtil.init();
    }
    protected void initSdk() {
        MySdkMgr.I.setListener();
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGameMain.java
New file
@@ -0,0 +1,42 @@
package com.secondworld.sdk;
import android.app.Activity;
import androidx.annotation.NonNull;
public class GTGameMain extends GameActivityProxy {
    @Override
    public void onCreate(Activity activity) {
        super.onCreate(activity);
        // 初始化SDK
        MySdkMgr.I.OnCreate(activity);
    }
    @Override
    public void onResume() {
        super.onResume();
        //SdkManager.getInstance().onResume(activity);
//        SdkManager.getInstance().showFloatView(activity);//显示悬浮窗
    }
    @Override
    public void onPause() {
        super.onPause();
        //SdkManager.getInstance().onPause(activity);
//        SdkManager.getInstance().hideFloatView(activity);//隐藏悬浮窗
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        //SdkManager.getInstance().onDestroy(activity);
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //SdkManager.getInstance().requestPermission(requestCode, permissions, grantResults);
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/GTGamePlatform.java
New file
@@ -0,0 +1,9 @@
                                               package com.secondworld.sdk;
public class GTGamePlatform extends PlatformDiff {
    @Override
    public String platformName() {
        return "VNGame";
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/MySdkMgr.java
New file
@@ -0,0 +1,149 @@
package com.secondworld.sdk;
import android.app.Activity;
import android.widget.Toast;
import com.secondworld.sdk.utils.CodeA2U;
import com.secondworld.sdk.utils.LogUtil;
import com.soha.sdk.LoginCallback;
import com.soha.sdk.LogoutCallback;
import com.soha.sdk.OnPayListener;
import com.soha.sdk.PaymentNewCallBack;
import com.soha.sdk.SohaSDK;
import com.soha.sdk.login.model.SohaLoginResult;
import com.soha.sdk.payment.model.IapItem;
import com.soha.sdk.payment.model.ListIap;
import org.json.JSONException;
import org.json.JSONObject;
public class MySdkMgr extends PlatformSdkMgr {
    private static final String TAG = MySdkMgr.class.getSimpleName();
    public static MySdkMgr I = new MySdkMgr();
    private LogoutCallback logoutCallback;
    public void init(Activity activity) {
        sdkInitState = SdkInitState.LOADING;
        SohaSDK.getInstance().setLanguage(activity, "vi");
    }
    public void OnCreate(Activity activity) {
        sdkInitState = SdkInitState.LOADING;
        SohaSDK.getInstance().setLanguage(activity, "vi");
        logoutCallback = new LogoutCallback() {
            @Override
            public void onLogout() {
                login();
            }
        };
        SohaSDK.getInstance().init(activity, logoutCallback);
    }
    public void login() {
        switch (sdkInitState) {
            case FAILED:
            case UNKNOWN: {
                if (GTGameMain.I.activity != null)
                    init(GTGameMain.I.activity);
                Toast.makeText(GameAppProxy.app, "Initializing", Toast.LENGTH_LONG).show();
                break;
            }
            case SUCCEED: {
                SohaSDK.getInstance().login(GTGameMain.I.activity, new LoginCallback() {
                    @Override
                    public void onSuccess(SohaLoginResult loginResult) {
                        LogUtil.i(TAG, "登录成功");
                        try {
                            args.clear();
                            JSONObject info = new JSONObject();
                            info.put("account", loginResult.getUserId());
                            info.put("game_id", "7");
                            info.put("session_id", loginResult.getAccessToken());
                            args.put("info", info);
                            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk, args);
                        } catch (JSONException e) {
                            e.printStackTrace();
                            LogUtil.e(TAG,"解析失败 但是登录成功 " + e.toString());
                        }
                    }
                    @Override
                    public void onError() {
                        LogUtil.e(TAG, "登录失败");
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
                    }
                    @Override
                    public void onCancel() {
                        LogUtil.e(TAG, "取消登录");
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
                    }
                });
                break;
            }
            case LOADING: {
                Toast.makeText(GameAppProxy.app, "Initializing", Toast.LENGTH_LONG).show();
                break;
            }
        }
    }
    public void setListener() {
        // 初始化监听
    }
    public void getListProduct() {
        SohaSDK.getInstance().getListProduct(new PaymentNewCallBack() {
            @Override
            public void onSuccess(ListIap listIap) {
                //拼接充值编号 |
                String orderString = "";
                int index = 0;
                for (IapItem item : listIap.getData())
                {
                    if (index == 0)
                    {
                        orderString = item.getOrder_info();
                    }
                    else
                    {
                        orderString = orderString + "|" + item.getOrder_info();
                    }
                }
                args.clear();
                args.put("orderInfos", orderString);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.OrderInfoCallBack, args);
            }
            @Override
            public void onFailure() {
                LogUtil.e(TAG, "请求不到充值列表");
            }
        });
    }
    public void pay(String orderInfo) {
        SohaSDK.getInstance().payProduct(GTGameMain.I.activity, orderInfo, new OnPayListener() {
            @Override
            public void onSuccessPaymentCoin(String transID) {
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayOk);
            }
            @Override
            public void onMaintenancePayment() {
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutFail);
            }
            @Override
            public void onFail() {
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutFail);
            }
        });
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdCreateRole.java
New file
@@ -0,0 +1,25 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.utils.CodeU2A;
import com.soha.sdk.SohaSDK;
import org.json.JSONObject;
public class CmdCreateRole implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.CreateRole;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SohaSDK.getInstance().logCreateCharacter(GTGameMain.I.activity,
                json.getString("sid"),//服务器id
                json.getString("roleID"),//角色id
                json.getString("roleName"),//角色名
                json.getString("level")//角色等级
        );
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPayFinished.java
New file
@@ -0,0 +1,16 @@
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 {
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformInit.java
New file
@@ -0,0 +1,17 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPlatformInit implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformInit;
    }
    @Override
    public void process(JSONObject json) throws Exception {
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformLogin.java
New file
@@ -0,0 +1,18 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPlatformLogin implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformLogin;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        MySdkMgr.I.login();
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformLogout.java
New file
@@ -0,0 +1,20 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.utils.CodeU2A;
import com.soha.sdk.SohaSDK;
import org.json.JSONObject;
public class CmdPlatformLogout implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformLogout;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SohaSDK.getInstance().logout(GTGameMain.I.activity);
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdPlatformPay.java
New file
@@ -0,0 +1,18 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPlatformPay implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformPay;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        MySdkMgr.I.pay(json.getString("cpInfo"));
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
New file
@@ -0,0 +1,25 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.utils.CodeU2A;
import com.soha.sdk.SohaSDK;
import org.json.JSONObject;
public class CmdRoleLevelUp implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.RoleLevelUp;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SohaSDK.getInstance().mapUserGame(GTGameMain.I.activity,
                json.getString("sid"),
                json.getString("roleID"),
                json.getString("roleName"),
                json.getString("level")
        );
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/CmdRoleLogin.java
New file
@@ -0,0 +1,28 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.soha.sdk.SohaSDK;
import org.json.JSONObject;
public class CmdRoleLogin implements  ICommand{
    @Override
    public int getCode() {
        return CodeU2A.RoleLogin;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SohaSDK.getInstance().logSelectCharacter(GTGameMain.I.activity,
                json.getString("sid"),//服务器id
                json.getString("roleID"),//角色id
                json.getString("roleName"),//角色名
                json.getString("level")//角色等级
        );
        //越南要通过SDK获取充值编号才能充值
        MySdkMgr.I.getListProduct();
    }
}
SdkProject/channel/VNGame/java/com/secondworld/sdk/command/GoToReview.java
New file
@@ -0,0 +1,19 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.utils.CodeU2A;
import com.soha.sdk.SohaSDK;
import org.json.JSONObject;
public class GoToReview implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.GoToReview;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SohaSDK.getInstance().openStore();
    }
}
SdkProject/channel/VNGame/libs/gson-2.8.2.jar
Binary files differ
SdkProject/channel/VNGame/libs/okhttp-3.9.0.jar
Binary files differ
SdkProject/channel/VNGame/libs/okio-1.13.0.jar
Binary files differ
SdkProject/channel/VNGame/libs/tbs_sdk_noimpl_43799.jar
Binary files differ
SdkProject/channel/VNGame/res/xml/filepaths.xml
New file
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>
        <root-path path="." name="root_path"/>
       <!-- <external-path name="external_storage_root" path="." />
        <external-path name="external_storage_download" path="." />
        <external-cache-path name="external_cache_path" path="." />
        <external-files-path name="external_files_path" path="." />
        <external-path name="external_path" path=". " />
        <cache-path name="cache_path" path="." />
        <files-path name="files_path" path="." />-->
    </paths>
</resources>
SdkProject/gradle.properties
@@ -18,4 +18,4 @@
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
#当前构建的渠道名称
CHANNEL_NAME=qkbt3game
CHANNEL_NAME=VNGame
SdkProject/libaar/SohaSDK.aar
Binary files differ
SdkProject/library/build.gradle
@@ -1,6 +1,7 @@
plugins {
    id 'com.android.library'
}
def rootPath = rootProject.getRootDir().getAbsolutePath()
def channelPath = "${rootPath}/channel/${CHANNEL_NAME}"
@@ -44,6 +45,7 @@
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }
    flavorDimensions "version"
    productFlavors {
@@ -182,7 +184,6 @@
dependencies {
    implementation 'androidx.annotation:annotation:1.0.0'
    testImplementation 'junit:junit:4.13.2'
    //noinspection GradleCompatible
//    implementation 'com.android.support:appcompat-v7:28.0.0'
@@ -193,5 +194,47 @@
        implementation fileTree(dir: "${rootPath}/plugins/${it}/libs/", include: ['*.jar'])
    }
    implementation fileTree(dir: 'libs', include: ['*.jar'], exclude: ['unity-classes.jar'])
    compileOnly files('libs/unity-classes.jar')
    compileOnly fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    implementation('androidx.appcompat:appcompat:1.0.0') {
        force = true
    }
    implementation(name: 'SohaSDK', ext: 'aar')
    implementation 'com.google.android.material:material:1.0.0'
    api 'com.squareup.retrofit2:retrofit:2.5.0'
    api 'com.squareup.retrofit2:converter-gson:2.4.0'
    api 'com.squareup.okhttp3:logging-interceptor:3.9.0'
    implementation 'com.google.firebase:firebase-analytics:17.4.1'
    implementation 'com.google.firebase:firebase-messaging:20.1.7'
    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-config:19.1.4'
    implementation 'com.facebook.android:facebook-login:11.1.0'
    implementation 'com.android.billingclient:billing:3.0.0'
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1'
    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
    api 'com.github.bumptech.glide:glide:4.9.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'com.github.ybq:Android-SpinKit:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    api 'androidx.multidex:multidex:2.0.1'
    api 'com.appsflyer:af-android-sdk:5.4.1'
    api 'com.android.installreferrer:installreferrer:1.0'
    api 'com.google.android.gms:play-services-auth:18.0.0'
    implementation 'com.adjust.sdk:adjust-android:4.28.3'
}
SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java
@@ -2,6 +2,7 @@
import android.app.Activity;
import android.content.pm.PackageManager;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@@ -9,7 +10,10 @@
import com.secondworld.sdk.utils.CallBackState;
import com.secondworld.sdk.utils.CodeA2U;
import com.secondworld.sdk.utils.LogUtil;
import com.secondworld.sdk.utils.RequestCode;
import com.soha.sdk.SohaSDK;
import com.soha.sdk.permission.GrantPermissions;
import java.util.HashMap;
import java.util.Map;
@@ -26,7 +30,7 @@
     */
    public boolean hasPermission(String permission) {
        return ContextCompat.checkSelfPermission(GameAppProxy.app, permission) == PackageManager.PERMISSION_GRANTED
                && PermissionChecker.checkSelfPermission(GameAppProxy.app, permission) == PackageManager.PERMISSION_GRANTED;
                && PermissionChecker.checkSelfPermission(GameAppProxy.app, permission) == PermissionChecker.PERMISSION_GRANTED;
    }
    /**
@@ -35,7 +39,14 @@
    public void requestPermissions(String permission) {
        if (GameActivityProxy.I == null || GameActivityProxy.I.activity == null)
            return;
        ActivityCompat.requestPermissions(GameActivityProxy.I.activity, new String[]{permission}, RequestCode.UNITY);
        //ActivityCompat.requestPermissions(GameActivityProxy.I.activity, new String[]{permission}, RequestCode.UNITY);
        SohaSDK.getInstance().requestPermission(new String[]{permission}, new GrantPermissions() {
            @Override
            public void doAction() {
            }
        });
    }
@@ -54,6 +65,7 @@
            }
        }
        UnityMsgHandler.sendMessageToUnity(CodeA2U.PermissionCallBack, map);
        LogUtil.i("onRequestPermissionsResult", permissions[0]);
    }
}
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
@@ -57,4 +57,5 @@
    int PlatformRegisterOk = 111;
    int ShareState = 112;
    int ReviewState = 113;
    int OrderInfoCallBack = 114;
}
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java
@@ -78,6 +78,7 @@
    int TencentLogin = 109;
    int ShareToFaceBook = 112;
    int GoToReview = 113;
    int TutorialFinish = 115;
    /**
     * 插件