package com.yyrh.sdk; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; import android.util.Log; import com.yyrh.advertisement.AdSdkCallback; import com.yyrh.advertisement.AdvertiseManager; import com.yyrh.constant.RoleInfo; import com.yyrh.constant.SDKSettings; import com.yyrh.factory.SdkManager; import com.yyrh.imei.ImeiUtil; import com.yyrh.sdk.callback.RealNameMsgCallback; import com.yyrh.sdk.callback.ShowPolicyCallback; import com.yyrh.sdk.callback.UserPolicyCallback; import com.yyrh.utils.PermissionUtils; import com.yyrh.utils.ResourceUtil; import com.yyrh.easypermission.EasyPermission; import com.yyrh.easypermission.GrantResult; import com.yyrh.easypermission.Permission; import com.yyrh.easypermission.PermissionRequestListener; import com.yyrh.ui.GameSplashDialog; import com.yyrh.utils.TosUtil; import com.yythird.base.ChannelSdkCallback; import com.yythird.sdk.ChannelSDK; import com.yyrh.utils.Utils; import com.yyrh.utils.YYLog; import com.yyrh.networking.NetRequestApi; import com.yyrh.sdk.callback.ExitCallback; import com.yyrh.sdk.callback.InitCallback; import com.yyrh.sdk.callback.LoginCallback; import com.yyrh.sdk.callback.LogoutCallback; import com.yyrh.sdk.callback.PayCallback; import com.yyrh.sdk.callback.PayOrderCallback; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import static com.yyrh.constant.SDKSettings.sp_code; public class SDKEntry { public InitCallback initCall; public LoginCallback loginCall; public PayCallback payCall; public LogoutCallback logoutCall; public ExitCallback exitCall; public RealNameMsgCallback realNameMsgCallback; public Activity gameAct; private ChannelSDK sdk = null; private YyrhSdkManager manager = null; private static volatile SDKEntry sdkInstance = null; private String role_ctime=""; public AdSdkCallback adSdkCallback = new AdSdkCallback() { @Override public void onRegisterSuccess(String msg) { AdvertiseManager.defaultManager(gameAct).registration(gameAct,msg); } @Override public void onLoginSuccess(String msg) { AdvertiseManager.defaultManager(gameAct).login(gameAct,msg); } @Override public void onPaySuccess(HashMap map) { AdvertiseManager.defaultManager(gameAct).paymentFinish(gameAct,map); } @Override public void onCreateOrder(HashMap map) { AdvertiseManager.defaultManager(gameAct).callPayment(gameAct,map); } @Override public void onUpLoadRoleInfo(String type, RoleInfo roleInfo) { AdvertiseManager.defaultManager(gameAct).upLoadRoleInfo(gameAct,type,roleInfo); } @Override public void onResume(Activity activity) { AdvertiseManager.defaultManager(activity).onResume(activity); } @Override public void onPause(Activity activity) { AdvertiseManager.defaultManager(activity).onPause(activity); } @Override public void onDestory(Activity activity) { AdvertiseManager.defaultManager(activity).onDestory(activity); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { AdvertiseManager.defaultManager(gameAct).onRequestPermissionsResult(requestCode,permissions,grantResults); } @Override public void onExitGame(Activity activity) { AdvertiseManager.defaultManager(activity).onExitGame(activity); } }; public ChannelSdkCallback tCallBack = new ChannelSdkCallback() { @Override public void onSetChannelTagCallback(String msg) { } @Override public void onInitCallback(boolean success, String msg) { if (success){ initCall.onInitSuccess(msg); }else{ new TosUtil(gameAct,"blue", msg).show(); initCall.onInitFailed(msg); } } @Override public void onLoginChannelCallback(String msg) { NetRequestApi.loginWithChannel(gameAct,msg,loginCall); } @Override public void onLogOutCallback(String msg) { logoutCall.onLogoutSuccess(); } @Override public void onPayFinishCallback(boolean success, String msg) { if (success){ payCall.onPaySuccess(msg); }else{ payCall.onPayFailed(msg); } } @Override public void onExiGameCallback(boolean success, String msg) { exitCall.onExit(true); } @Override public void onPayExtParamCallback(HashMap payInfo, String url) { NetRequestApi.payChannelNotify(payInfo,url); } @Override public void onGetChannelRealNameCallback(boolean isRealName, String report_type, String channelRealNameInfo) { if (isRealName){ NetRequestApi.recordUserRealNameInfo(gameAct,report_type,channelRealNameInfo); }else{ realNameMsgCallback.onLoadRealNameMsg(false,""); } } @Override public void onLoginChannelFail(String msg) { new TosUtil(gameAct,"blue", msg).show(); sdk.SDKLoginChannelFail(msg); } @Override public void onLoginChannelSuccess(String msg) { sdk.SDKLoginChannelSuccess(msg); } @Override public void onUploadUserRealNameInfo(String report_type,String msg) { NetRequestApi.upLoadUserRealNameInfo(report_type,msg); } @Override public void onGetOaidCallback(final boolean isSuccess, final String oaid) { gameAct.runOnUiThread(new Runnable() { @Override public void run() { if (isSuccess){ if (Build.VERSION.SDK_INT > 28){ SDKSettings.ifa_type = "2"; initCall.onGetOaid(true,oaid); }else{ initCall.onGetOaid(false,""); } SDKSettings.imei = oaid; Utils.setSharedPreferences("yyrh","simulateImei",oaid,gameAct); }else{ SDKSettings.imei = ImeiUtil.getImei(gameAct); initCall.onGetOaid(false,""); } Log.i("imei:",SDKSettings.imei); manager.yyrhInit(gameAct); } }); } @Override public String onGetChannelUid() { return SDKSettings.CHANNELUID; } }; /** * 实现单例 */ private SDKEntry() { } public static SDKEntry getSdkInstance() { if (sdkInstance == null) { synchronized (SDKEntry.class) { if (sdkInstance == null) { sdkInstance = new SDKEntry(); } } } return sdkInstance; } public void showPrivacyPolicy(Activity activity, UserPolicyCallback userPolicyCallback){ YyrhSdkManager.defaultManager(activity).yyrhShowPolicy(activity,userPolicyCallback); } public void initSdk(final Activity activity, final InitCallback callback, final boolean isDebug){ this.gameAct = activity; this.initCall = callback; sdk = ChannelSDK.getInstance(); manager = YyrhSdkManager.defaultManager(activity); sdk.SDKInit(activity,tCallBack); InputStream inputStream = null; try { inputStream = activity.getAssets().open("yyrh_start_image.jpg"); } catch (IOException e) { } if(inputStream != null){ new GameSplashDialog(activity, ResourceUtil.getStyleId(activity,"yyrh_welcome_dialog")).show(); } int checkResult; if (PermissionUtils.checkIsHasPermission(activity,PermissionUtils.CODE_READ_PHONE_STATE) == 0 && PermissionUtils.checkIsHasPermission(activity,PermissionUtils.CODE_WRITE_EXTERNAL_STORAGE) == 0){ checkResult = 0; }else{ checkResult = -1; } switch (checkResult){ case 0 : AdvertiseManager.defaultManager(activity).advertiseInit(activity); manager.yyrhInitDevice(activity, isDebug); break; case -1 : String[] permissions = new String[]{Permission.READ_PHONE_STATE,Permission.WRITE_EXTERNAL_STORAGE}; EasyPermission.with(activity) .addPermissions(permissions) //申请打电话权限 .request(new PermissionRequestListener() { @Override public void onGrant(Map result) { //权限申请返回 AdvertiseManager.defaultManager(activity).advertiseInit(activity); manager.yyrhInitDevice(activity, isDebug); } @Override public void onCancel(String stopPermission) { //在addRequestPermissionRationaleHandler的处理函数里面调用了NextAction.next(NextActionType.STOP,就会中断申请过程,直接回调到这里来 } }); break; } } public void login (Activity activity, LoginCallback callback){ this.loginCall = callback; SdkManager.defaultManager(activity).login(activity); } public void pay(final HashMap map, final PayCallback callback, final Activity activity) { this.payCall = callback; YYLog.i("payOrderInit"); map.put("role_ctime",this.role_ctime); if (SDKSettings.UNAME.equals("")){ new TosUtil(activity,"blue", activity.getString(ResourceUtil.getStringId(activity, "yyrh_login2pay"))).show(); return; } NetRequestApi.payOrderInit(map, activity, new PayOrderCallback() { @Override public void onPaySuccess(HashMap map) { adSdkCallback.onCreateOrder(map); SdkManager.defaultManager(activity).pay(activity, map); } @Override public void onPayFailed(String msg) { callback.onPayFailed(msg); } }); } public void setSDKLogoutListener(Activity activity, final LogoutCallback callback) { YYLog.i("SDKLogoutListener"); logoutCall = callback; SdkManager.defaultManager(activity).setSDKLogoutListener(activity, tCallBack); } public void logout(){ YYLog.i("logout"); SdkManager.defaultManager(gameAct).logOut(); } public void exitGame(Activity activity, final ExitCallback callback) { YYLog.i("exitGame"); this.exitCall = callback; SdkManager.defaultManager(activity).exit(activity); } public void upLoadRoleInfo(String type, Activity activity,RoleInfo roleInfo){ YYLog.i("sdk uploadUserInfo"); this.role_ctime = roleInfo.getRoleCreateTime(); String roleId = roleInfo.getRoleId(); String roleName = roleInfo.getRoleName(); String roleLevel = roleInfo.getRoleLevel(); String gender = roleInfo.getGender(); String serverId = roleInfo.getServerId(); String serverName = roleInfo.getServerName(); String hasGold = roleInfo.getHasGold(); String vipLevel = roleInfo.getVipLevel(); String roleCreateTime = roleInfo.getRoleCreateTime(); String partyName = roleInfo.getPartyName(); String role_power = roleInfo.getRolePower(); String partyId = roleInfo.getPartyId(); String reincarnationCount = roleInfo.getReincarnationCount(); String charge = roleInfo.getCharge(); if (Utils.judgeStrNull(charge)){ charge = "0"; } if (Utils.judgeStrNull(roleId) || Utils.judgeStrNull(roleName) || Utils.judgeStrNull(roleLevel) || Utils.judgeStrNull(gender) || Utils.judgeStrNull(serverId) || Utils.judgeStrNull(serverName) || Utils.judgeStrNull(hasGold) || Utils.judgeStrNull(vipLevel) || Utils.judgeStrNull(roleCreateTime) || Utils.judgeStrNull(role_power) || Utils.judgeStrNull(reincarnationCount)) { YYLog.i("上报参数有空值,请检查: "+ roleInfo.getAllParam()); }else{ YYLog.i("游戏角色信息上报sdk相关参数: "+ roleInfo.getAllParam()); YyrhSdkManager.defaultManager(activity).uploadRoleInfo(type, activity, roleId, roleName, roleLevel, serverId, serverName, hasGold, vipLevel, role_power, partyId, partyName, roleCreateTime,charge); SdkManager.defaultManager(activity).uploadRoleInfo(type, activity, roleInfo); adSdkCallback.onUpLoadRoleInfo(type,roleInfo); } } /** * 生命周期 */ public void sdkOnStart(Activity activity) { YYLog.i("sdk OnStart"); SdkManager.defaultManager(activity).sdkOnStart(activity); } public void sdkOnCreate(Activity activity,Bundle savedInstanceState) { YYLog.i("sdk onCreate"); SdkManager.defaultManager(activity).sdkOnCreate(activity, savedInstanceState); } public void sdkOnPause(Activity activity) { YYLog.i("sdk OnPause"); SDKEntry.getSdkInstance().adSdkCallback.onPause(activity); SdkManager.defaultManager(activity).sdkOnPause(activity); } public void sdkOnResume(Activity activity) { YYLog.i("sdk OnResume"); SDKEntry.getSdkInstance().adSdkCallback.onResume(activity); SdkManager.defaultManager(activity).sdkOnResume(activity); } public void sdkOnRestart(Activity activity) { YYLog.i("sdk onRestart"); SdkManager.defaultManager(activity).sdkOnRestart(activity); } public void sdkOnNewIntent(Activity acitivty, Intent intent) { YYLog.i("sdk OnNewIntent"); SdkManager.defaultManager(acitivty).sdkOnNewIntent(acitivty, intent); } public void sdkOnStop(Activity activity) { YYLog.i("sdk OnStop"); SdkManager.defaultManager(activity).sdkOnStop(activity); } public void onConfigurationChanged(Configuration newConfigs) { YYLog.i("sdk onConfigurationChanged"); SdkManager.defaultManager(gameAct).onConfigurationChanged(newConfigs); } public void sdkOnDestroy(Activity activity) { YYLog.i("sdk OnDestroy"); SDKEntry.getSdkInstance().adSdkCallback.onDestory(activity); SdkManager.defaultManager(gameAct).sdkOnDestroy(activity); } public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){ YYLog.i("sdk onRequestPermissionsResult"); SDKEntry.getSdkInstance().adSdkCallback.onRequestPermissionsResult(requestCode,permissions,grantResults); SdkManager.defaultManager(gameAct).onRequestPermissionsResult(requestCode, permissions, grantResults); } public void onActivityResult(Activity ac,int requestCode, int resultCode, Intent data) { YYLog.i("sdk onActivityResult"); SdkManager.defaultManager(gameAct).onActivityResult(ac, requestCode, resultCode, data); } public void onWindowFocusChanged(Activity activity, boolean hasFocus){ YYLog.i("sdk onWindowFocusChanged"); SdkManager.defaultManager(gameAct).onWindowFocusChanged(activity, hasFocus); } public void getRealNameInfo(Activity activity, RealNameMsgCallback realNameMsgCallback){ this.realNameMsgCallback = realNameMsgCallback; if (Utils.getTextIsNull(SDKSettings.UNAME)){ new TosUtil(activity,"blue", activity.getString(ResourceUtil.getStringId(activity, "yyrh_login2pay"))).show(); return; } SdkManager.defaultManager(gameAct).getRealNameInfo(activity, realNameMsgCallback); } }