hch
2023-12-28 e9ce011b8d7362bd2ae4ebba52cf638559bcef62
0312 越南
10个文件已修改
1个文件已添加
498 ■■■■ 已修改文件
SdkProject/channel/hyyngame/AndroidManifest.xml 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/GTGameApp.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/GTGameMain.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/MySdkMgr.java 213 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdCreateRole.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdPlatformPay.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdRoleLevelUp.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdRoleLogin.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/res/values/strings.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hyyngame/AndroidManifest.xml
@@ -3,43 +3,114 @@
    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" />
    <!--    GooglePay-->
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="com.android.vending.BILLING"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"  android:maxSdkVersion="32"/>
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <!-- 特殊权限,需要申请 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <!--facebook -->
    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
    <application
        android:name=".GTGameApp"
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true"
        android:usesCleartextTraffic="false"
        android:supportsPictureInPicture= "true"
        android:resizeableActivity="true"
        android:exported="false"
        android:extractNativeLibs="true"
        android:networkSecurityConfig="@xml/network_security_config"
        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/file_paths" />
<!--        <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/file_paths" />-->
        </provider>
        <meta-data
            android:name="JF_APPID"
            android:value="81445"/>
        <meta-data
            android:name="JF_APPKEY"
            android:value="538D489BFA57BAF0AF6401745118D6EA"/>
<!--        </provider>-->
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
        <activity
            android:name="com.juefeng.sdk.juefengsdk.ui.activity.InitdataActivity"
            android:screenOrientation="sensorLandscape" />
            android:exported="false"
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter><action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
        <!-- 例如:  <provider android:authorities="com.facebook.app.FacebookContentProvider123456789"-->
        <provider android:authorities="com.facebook.app.FacebookContentProvider+Facebook_APP_ID"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
        <receiver
            android:name="com.appsflyer.SingleInstallBroadcastReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>
        <!--SDK end-->
        <meta-data
            android:name="ALD_GAME_MAIN_ACTIVITY"
            android:value="com.demo.MainActivity[主activity路径]" />
        <meta-data
            android:name="ALD_GAME_CHANNELID"
            android:value="331" />
        <meta-data
            android:name="ALD_GAME_APPID"
            android:value=""/>
        <meta-data
            android:name="ALD_GAME_GAMEID"
            android:value=""/>
        <!--facebook-->
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />
        <meta-data
            android:name="com.facebook.sdk.ClientToken"
            android:value="@string/facebook_client_token"/>
        <!--应用谷歌id -->
        <meta-data
            android:name="google-signin-client_id"
            android:value=""/>
        <!--appflyer参数 -->
        <meta-data
            android:name="appflyer-key"
            android:value=""/>
    </application>
</manifest>
SdkProject/channel/hyyngame/java/com/secondworld/sdk/GTGameApp.java
@@ -1,10 +1,8 @@
package com.secondworld.sdk;
import android.app.Application;
import com.lp.overseas.sdk.AldApplication;
public class GTGameApp extends Application {
public class GTGameApp extends AldApplication {
    @Override
    public void onCreate() {
SdkProject/channel/hyyngame/java/com/secondworld/sdk/GTGameMain.java
@@ -8,7 +8,6 @@
import androidx.annotation.NonNull;
import com.juefeng.sdk.juefengsdk.JFSDK;
public class GTGameMain extends GameActivityProxy {
@@ -68,7 +67,7 @@
                new AlertDialog.Builder(activity).setTitle("退出").setMessage("是否退出游戏?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        JFSDK.getInstance().exitLogin(GTGameMain.I.activity);
                        MySdkMgr.manger.exit(GTGameMain.I.activity);
                    }
                }).setNegativeButton("取消", null).show();
            return true;
SdkProject/channel/hyyngame/java/com/secondworld/sdk/MySdkMgr.java
@@ -6,16 +6,12 @@
import androidx.annotation.NonNull;
import com.juefeng.sdk.juefengsdk.interf.SDKEventListener;
import com.juefeng.sdk.juefengsdk.services.bean.CreatOrderInfo;
import com.juefeng.sdk.juefengsdk.services.bean.JfOrderInfo;
import com.juefeng.sdk.juefengsdk.services.bean.LoginErrorMsg;
import com.juefeng.sdk.juefengsdk.services.bean.LogincallBack;
import com.juefeng.sdk.juefengsdk.services.bean.PayFaildInfo;
import com.juefeng.sdk.juefengsdk.services.bean.PaySuccessInfo;
import com.lp.overseas.sdk.external.AldGameManger;
import com.lp.overseas.sdk.external.conts.AldUserHolder;
import com.lp.overseas.sdk.external.model.AldUserData;
import com.lp.overseas.sdk.external.model.OrderInfo;
import com.secondworld.sdk.utils.CodeA2U;
import com.secondworld.sdk.utils.LogUtil;
import com.juefeng.sdk.juefengsdk.JFSDK;
import org.json.JSONException;
import org.json.JSONObject;
@@ -24,21 +20,94 @@
    private static final String TAG = MySdkMgr.class.getSimpleName();
    public static MySdkMgr I = new MySdkMgr();
    public static String uid;
    public static int viplevel;
    public static AldGameManger manger = AldGameManger.getInstance();
    public void init(Activity activity) {
        sdkInitState = SdkInitState.LOADING;
        JFSDK.getInstance().init(activity, mSDKEventListener);
        manger = AldGameManger.getInstance();
        //sdk初始化,初始化结果回调里面游戏需自己处理跳转逻辑
        manger.init(activity, new AldGameManger.SDKCallback() {
            @Override
            public void onInitFinished(boolean isSuccess) {
                if (isSuccess) {
                    //初始化成功,进入游戏
                    sdkInitState = SdkInitState.SUCCEED;
                    LogUtil.debug("SdkManager", "初始化成功");
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
                } else {
                    //初始化失败,则无法调起登录。游戏需继续调用SDK初始化接口及自行处理逻辑跳转
                    Toast.makeText(GameAppProxy.app,  "init fail ", Toast.LENGTH_LONG).show();
                    //初始化失败
                    sdkInitState = SdkInitState.FAILED;
                    LogUtil.e("SdkManager", "初始化失败");
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitFail);
                }
            }
            @Override
            public void onLoginFinished(AldUserData userData, AldUserHolder loginState) {
                if (loginState.getStateCode() == AldUserHolder.LOGIN_SUCCESS) {
                    //登入成功
                    uid = userData.getUserId(); //作为唯一标示
                    String sign = userData.getSign();//获取签名
                    String timestamp = userData.getTimestamp();//登入时间
                    //判断登录方式: 3:goole登入,4:facebook登入
                    int logintype = userData.getOpenType();
                    try
                    {
                        args.clear();
                        JSONObject info = new JSONObject();
                        String channelID = "1";
                        String account = uid + "@" + channelID;
                        info.put("account", account);
                        info.put("userName", uid);
                        info.put("token", sign);
                        info.put("token_expire", timestamp);//时间戳
                        info.put("session_id", String.valueOf(logintype));//判断登录方式
                        args.put("info", info);
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk, args);
                    } catch (JSONException e) {
                        e.printStackTrace();
                        LogUtil.e("SdkManager 登录成功 但信息处理失败", e);
                    }
                    LogUtil.i(TAG, "login success,uid:" + uid);
                } else {
                    //登录取消
                    Toast.makeText(GameAppProxy.app, "login fail " , Toast.LENGTH_LONG).show();
                    //登录失败
                    LogUtil.e("SdkManager", "登录失败");
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
                }
            }
            @Override
            public void onLogout() {
                //悬浮窗 注销账号成功,注销账号成功后,游戏应从游戏的界面退回到登录界面中
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
            }
            @Override
            public void onExit(boolean isSuccess) {
                if (isSuccess) {
                    //退出游戏
                    System.exit(0);
                } else {
                    //继续游戏
                }
            }
        });
    }
    public void OnCreate(Activity activity) {
        JFSDK.getInstance().onCreate(GTGameMain.I.activity);
        init(activity);
    }
    public void onStart()
    {
        JFSDK.getInstance().onStart(GTGameMain.I.activity);
        manger.onStart(GTGameMain.I.activity);
    }
    public void login() {
@@ -53,7 +122,7 @@
                    @Override
                    public void run() {
                        JFSDK.getInstance().doLogin(GTGameMain.I.activity);
                        manger.login(GTGameMain.I.activity);
                    }
                });
@@ -69,133 +138,55 @@
    public void LogOutInitialize() {
        JFSDK.getInstance().logoutLogin(GTGameMain.I.activity);
        manger.logout(GTGameMain.I.activity);
    }
    public void pay(JfOrderInfo roleInfo) {
        JFSDK.getInstance().showPay(GTGameMain.I.activity, roleInfo);
    public void pay(OrderInfo pauInfo) {
        manger.pay(GTGameMain.I.activity, pauInfo);
    }
    public void onResume() {
        JFSDK.getInstance().onResume(GTGameMain.I.activity);
        manger.onResume(GTGameMain.I.activity);
    }
    public void onPause() {
        JFSDK.getInstance().onPause(GTGameMain.I.activity);
        manger.onPause(GTGameMain.I.activity);
    }
    public void onStop() {
        JFSDK.getInstance().onStop(GTGameMain.I.activity);
        manger.onStop(GTGameMain.I.activity);
    }
    public void onDestroy() {
        //退出登录、退出游戏调用
        JFSDK.getInstance().onDestroy(GTGameMain.I.activity);
        manger.onDestroy(GTGameMain.I.activity);
    }
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        JFSDK.getInstance().onActivityResult(GTGameMain.I.activity, requestCode, resultCode, data);
        manger.onActivityResult(requestCode, resultCode, data);
    }
    public void onRequestPermissionsResult(int requestCode,
                                           @NonNull String[] permissions, @NonNull int[] grantResults) {
        JFSDK.getInstance().onRequestPermissionsResult(GTGameMain.I.activity, requestCode, permissions, grantResults);
        manger.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    SDKEventListener mSDKEventListener = new SDKEventListener(){
        @Override
        public void onLoginSuccess(LogincallBack logincallBack) {//登录成功
            JFSDK.getInstance().showFloatView(GTGameMain.I.activity);
            try
            {
                args.clear();
                JSONObject info = new JSONObject();
                String channelID = "9996";
                uid = logincallBack.userId;
                String account = uid + "@" + channelID;
                info.put("account", account);
                info.put("userName", uid);
                info.put("token", logincallBack.token);
                args.put("info", info);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk, args);
            } catch (JSONException e) {
                e.printStackTrace();
                LogUtil.e("SdkManager 登录成功 但信息处理失败", e);
            }
//        @Override
//        public void onPaySuccessCallback(PaySuccessInfo paySuccessInfo) {
//            //支付成功
//            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayOk);
//            }
//
//        @Override
//        public void onPayFaildCallback(PayFaildInfo payFaildInfo) {
//            //支付失败
//            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayFail);
//            }
            LogUtil.i(TAG, "login success,uid:" + uid + " userName:" + logincallBack.userName);
        }
        @Override
        public void onLoginFailed(LoginErrorMsg loginErrorMsg) {//登录失败
            Toast.makeText(GameAppProxy.app, "login fail " + loginErrorMsg.getCode(), Toast.LENGTH_LONG).show();
            //登录失败
            LogUtil.e("SdkManager", "登录失败:" + loginErrorMsg.getErrorMsg());
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
        }
        @Override
        public void onInitSuccess(String desc,boolean isAutoLogin) {
            sdkInitState = SdkInitState.SUCCEED;
            LogUtil.debug("SdkManager", "初始化成功");
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
        }
        @Override
        public void onInitFaild(String desc) {
            Toast.makeText(GameAppProxy.app,  "init fail "+desc, Toast.LENGTH_LONG).show();
            //初始化失败
            sdkInitState = SdkInitState.FAILED;
            LogUtil.e("SdkManager", "初始化失败 msg:" + desc);
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitFail);
        }
        @Override
        public void onPaySuccessCallback(PaySuccessInfo paySuccessInfo) {
            //支付成功
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayOk);
            }
        @Override
        public void onPayFaildCallback(PayFaildInfo payFaildInfo) {
            //支付失败
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayFail);
            }
        @Override
        public void onExit(String desc) {//退出成功
        }
        @Override
        public void onCancleExit(String desc) {
        }
        @Override
        public void onCreatedOrder(CreatOrderInfo infoBean) {
            //订单创建成功
            LogUtil.i("SdkManager", "订单创建成功");
        }
        @Override
        public void  onLogoutLogin(){//此处需回到游戏登录界面游戏方执行
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
        }
        public void onSwitchAccountSuccess(LogincallBack login)
        {
    /*此回调接口是在当SDK内部有切换帐号的功能,且切换成功时会调用,游
    戏方需要在这个回调接口中注销原来的角色数据,然后根据新的openid(参数
        login中可以获取到)来重新加载角色数据;*/
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
        }
        @Override
        public void onGameSwitchAccount()
        {
    /*此接口是在游戏内有账号切换功能点击 调用          JFSDK.getInstance().switchAccount(MainActivity.this);后回调
      游戏方账号切换逻辑需要在此回调中执行
    * */
            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
        }
    };
}
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdCreateRole.java
@@ -1,7 +1,7 @@
package com.secondworld.sdk.command;
import com.juefeng.sdk.juefengsdk.JFSDK;
import com.juefeng.sdk.juefengsdk.services.bean.JfRoleInfo;
import com.lp.overseas.sdk.external.model.RoleData;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
@@ -16,20 +16,16 @@
    @Override
    public void process(JSONObject json) throws Exception {
        //上报角色信息
        JfRoleInfo roleInfo = new JfRoleInfo();
        roleInfo.setGameRoleLevel(json.getString("level"));
        roleInfo.setRoleId(json.getString("roleID"));
        roleInfo.setGameRolePower(json.getInt("fightPower"));
        roleInfo.setServerId(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setRoleName(json.getString("roleName"));
        roleInfo.setExperience("1");
        roleInfo.setPartyId(json.getString("familyID"));
        roleInfo.setPartyName(json.getString("familyName"));
        roleInfo.setRoleCreateTime(System.currentTimeMillis());
        roleInfo.setVipLevel(json.getInt("vipLevel"));
        roleInfo.setType("1");
        JFSDK.getInstance().syncInfo(roleInfo);
        RoleData data = new RoleData();
        data.setRoleId(json.getString("roleID"));// 角色id
        data.setUid(MySdkMgr.I.uid);//登录时获取的sdk uid
        data.setRoleName(json.getString("roleName"));// 角色名
        data.setRoleLevel(json.getString("level"));// 角色等级
        data.setServerId(json.getString("sid"));// 所在服id
        data.setServerName(json.getString("serverName"));// 所在服名称
        data.setBalance(json.getString("money"));//游戏角色余额
        data.setVipLevel(json.getString("vipLevel"));//游戏角色等级
        MySdkMgr.manger.roleCreate(GTGameMain.I.activity, data);
    }
}
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdPlatformPay.java
@@ -1,6 +1,6 @@
package com.secondworld.sdk.command;
import com.juefeng.sdk.juefengsdk.services.bean.JfOrderInfo;
import com.lp.overseas.sdk.external.model.OrderInfo;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
@@ -14,24 +14,23 @@
    @Override
    public void process(JSONObject json) throws Exception {
        //channelID_cp订单id_区服id_游戏充值编号  长度不超过100 只能用下划线
        JfOrderInfo roleInfo = new JfOrderInfo ();
        String attach = "1_" + json.getString("orderId") + "_" + json.getString("sid") + "_" + json.getString("cpInfo");
        roleInfo.setLevel(json.getString("level"));
        roleInfo.setGoodsId(json.getString("cpInfo"));
        roleInfo.setGoodsName(json.getString("title"));
        roleInfo.setGoodsDes(json.getString("title"));
        roleInfo.setPrice(json.getString("mount"));
        roleInfo.setServerId(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setRoleId(json.getString("roleID"));
        roleInfo.setRoleName(json.getString("roleName"));
        roleInfo.setVip(json.getString("vipLevel"));
        OrderInfo payInfo = new OrderInfo();
        payInfo.setServerId(json.getString("sid"));//所在服务器ID
        payInfo.setUid(MySdkMgr.I.uid);//登录时获取的sdk uid
        payInfo.setServerName(json.getString("serverName"));//所在服务器名称
        payInfo.setRoleId(json.getString("roleID"));//游戏角色ID
        payInfo.setRoleName(json.getString("roleName"));//游戏角色名称
        payInfo.setRoleLevel(json.getString("level"));//游戏角色等级
        payInfo.setProductDesc(json.getString("title"));//产品描述
        payInfo.setProducId(json.getString("cpInfo"));//产品ID
        payInfo.setCpOrderId(json.getString("orderId"));//订单号
        payInfo.setAmount(json.getDouble("mount"));//支付金额  精确到两位小数
        payInfo.setCallbackURL("callbackUrl");//回调地址;通知发货地址(需加密)工具在下方,255个字符内
        payInfo.setCallbackInfo(attach);//透传参数;游戏方的回调地址所需透传参数,服务端支付回调时原样返回
        String attach = "9996_" + json.getString("orderId") + "_" + json.getString("sid") + "_" + json.getString("cpInfo");
        roleInfo.setRemark(attach);
        roleInfo.setCpOrderId(json.getString("orderId"));
        MySdkMgr.I.pay(roleInfo);
        MySdkMgr.I.pay(payInfo);
    }
}
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
@@ -1,8 +1,8 @@
package com.secondworld.sdk.command;
import com.juefeng.sdk.juefengsdk.JFSDK;
import com.juefeng.sdk.juefengsdk.services.bean.JfRoleInfo;
import com.lp.overseas.sdk.external.model.RoleData;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
@@ -17,18 +17,15 @@
    @Override
    public void process(JSONObject json) throws Exception {
        //上报角色信息
        JfRoleInfo roleInfo = new JfRoleInfo();
        roleInfo.setGameRoleLevel(json.getString("level"));
        roleInfo.setRoleId(json.getString("roleID"));
        roleInfo.setGameRolePower(json.getInt("fightPower"));
        roleInfo.setServerId(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setRoleName(json.getString("roleName"));
        roleInfo.setExperience("1");
        roleInfo.setPartyId(json.getString("familyID"));
        roleInfo.setPartyName(json.getString("familyName"));
        roleInfo.setVipLevel(json.getInt("vipLevel"));
        roleInfo.setType("3");
        JFSDK.getInstance().syncInfo(roleInfo);
        RoleData data = new RoleData();
        data.setRoleId(json.getString("roleID"));// 角色id
        data.setUid(MySdkMgr.I.uid);//登录时获取的sdk uid
        data.setRoleName(json.getString("roleName"));// 角色名
        data.setRoleLevel(json.getString("level"));// 角色等级
        data.setServerId(json.getString("sid"));// 所在服id
        data.setServerName(json.getString("serverName"));// 所在服名称
        data.setBalance(json.getString("money"));//游戏角色余额
        data.setVipLevel(json.getString("vipLevel"));//游戏角色等级
        MySdkMgr.manger.roleLevelUp(GTGameMain.I.activity, data);
    }
}
SdkProject/channel/hyyngame/java/com/secondworld/sdk/command/CmdRoleLogin.java
@@ -1,7 +1,7 @@
package com.secondworld.sdk.command;
import com.juefeng.sdk.juefengsdk.JFSDK;
import com.juefeng.sdk.juefengsdk.services.bean.JfRoleInfo;
import com.lp.overseas.sdk.external.model.RoleData;
import com.secondworld.sdk.GTGameMain;
import com.secondworld.sdk.MySdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
@@ -17,18 +17,15 @@
    public void process(JSONObject json) throws Exception {
        //上报角色信息
        JfRoleInfo roleInfo = new JfRoleInfo();
        roleInfo.setGameRoleLevel(json.getString("level"));
        roleInfo.setRoleId(json.getString("roleID"));
        roleInfo.setGameRolePower(json.getInt("fightPower"));
        roleInfo.setServerId(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setRoleName(json.getString("roleName"));
        roleInfo.setExperience("1");
        roleInfo.setPartyId(json.getString("familyID"));
        roleInfo.setPartyName(json.getString("familyName"));
        roleInfo.setVipLevel(json.getInt("vipLevel"));
        roleInfo.setType("2");
        JFSDK.getInstance().syncInfo(roleInfo);
        RoleData data = new RoleData();
        data.setRoleId(json.getString("roleID"));// 角色id
        data.setUid(MySdkMgr.I.uid);//登录时获取的sdk uid
        data.setRoleName(json.getString("roleName"));// 角色名
        data.setRoleLevel(json.getString("level"));// 角色等级
        data.setServerId(json.getString("sid"));// 所在服id
        data.setServerName(json.getString("serverName"));// 所在服名称
        data.setBalance(json.getString("money"));//游戏角色余额
        data.setVipLevel(json.getString("vipLevel"));//游戏角色等级
        MySdkMgr.manger.roleLogin(GTGameMain.I.activity, data);
    }
}
SdkProject/channel/hyyngame/res/values/strings.xml
New file
@@ -0,0 +1,7 @@
<resources>
    <string name="facebook_app_id">4125229144241169
</string> <string name="fb_login_protocol_scheme">fb4125229144241169
</string>
    <string name="facebook_client_token">a0ac8136a5d7dd1657d29cc34c5bdfe5</string>
</resources>
SdkProject/library/build.gradle
@@ -208,9 +208,9 @@
    implementation(name: 'lp_v1.1.3', ext: 'aar') //x.x.x为具体版本
    implementation("com.android.billingclient:billing:5.0.0")
    implementation 'com.google.android.gms:play-services-auth:20.1.0'
    implementation 'com.facebook.android:facebook-login:latest.release'
    implementation 'com.facebook.android:facebook-share:latest.release'
    implementation 'androidx.percentlayout:percentlayout:1.0.0'
    implementation 'com.facebook.android:facebook-android-sdk:[13,14)'
    implementation 'com.facebook.android:facebook-share:[13,14)'
    implementation 'com.appsflyer:af-android-sdk:6.9.0'
    implementation 'com.android.installreferrer:installreferrer:2.2'
    implementation platform('com.google.firebase:firebase-bom:30.4.0') {
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java
@@ -10,7 +10,6 @@
import com.secondworld.sdk.utils.LogUtil;
import com.secondworld.sdk.utils.WebViewUtil;
import com.juefeng.sdk.juefengsdk.JFSDK;
public class GameActivity extends UnityPlayerActivity {
@@ -60,8 +59,6 @@
        super.onRestart();
        if (proxy != null)
            proxy.onRestart();
        JFSDK.getInstance().onRestart(GTGameMain.I.activity);
    }
    @Override
@@ -97,7 +94,6 @@
        super.onNewIntent(intent);
        if (proxy != null)
            proxy.onNewIntent(intent);
        JFSDK.getInstance().onNewIntent(GTGameMain.I.activity, intent);
    }
    @Override
@@ -122,28 +118,25 @@
        return b ? b : super.onKeyDown(keyCode, event);
    }
    @Override
    public boolean  dispatchKeyEvent(KeyEvent event) {
        if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            if(event.getAction() == KeyEvent.ACTION_DOWN&&event.getRepeatCount() == 0) {
                JFSDK.getInstance().exitLogin(GTGameMain.I.activity);
                return true;
            }
        }
        return super.dispatchKeyEvent(event);
    }
    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        super.onWindowFocusChanged(hasFocus);
        JFSDK.getInstance().onWindowFocusChanged(hasFocus);
        MySdkMgr.manger.onWindowFocusChanged(hasFocus, GTGameMain.I.activity);
    }
    @Override
    public void onBackPressed()
    public void onAttachedToWindow()
    {
        super.onBackPressed();
        JFSDK.getInstance().onBackPressed(GTGameMain.I.activity);
        super.onAttachedToWindow();
        MySdkMgr.manger.onAttachedToWindow();
    }
    @Override
    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        MySdkMgr.manger.onDetachedFromWindow();
    }
}