SDKEntry.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. package com.yyrh.sdk;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.content.SharedPreferences;
  5. import android.content.res.Configuration;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import com.yyrh.advertisement.AdSdkCallback;
  10. import com.yyrh.advertisement.AdvertiseManager;
  11. import com.yyrh.constant.RoleInfo;
  12. import com.yyrh.constant.SDKSettings;
  13. import com.yyrh.factory.SdkManager;
  14. import com.yyrh.imei.ImeiUtil;
  15. import com.yyrh.sdk.callback.RealNameMsgCallback;
  16. import com.yyrh.sdk.callback.ShowPolicyCallback;
  17. import com.yyrh.sdk.callback.UserPolicyCallback;
  18. import com.yyrh.utils.PermissionUtils;
  19. import com.yyrh.utils.ResourceUtil;
  20. import com.yyrh.easypermission.EasyPermission;
  21. import com.yyrh.easypermission.GrantResult;
  22. import com.yyrh.easypermission.Permission;
  23. import com.yyrh.easypermission.PermissionRequestListener;
  24. import com.yyrh.ui.GameSplashDialog;
  25. import com.yyrh.utils.TosUtil;
  26. import com.yythird.base.ChannelSdkCallback;
  27. import com.yythird.sdk.ChannelSDK;
  28. import com.yyrh.utils.Utils;
  29. import com.yyrh.utils.YYLog;
  30. import com.yyrh.networking.NetRequestApi;
  31. import com.yyrh.sdk.callback.ExitCallback;
  32. import com.yyrh.sdk.callback.InitCallback;
  33. import com.yyrh.sdk.callback.LoginCallback;
  34. import com.yyrh.sdk.callback.LogoutCallback;
  35. import com.yyrh.sdk.callback.PayCallback;
  36. import com.yyrh.sdk.callback.PayOrderCallback;
  37. import java.io.IOException;
  38. import java.io.InputStream;
  39. import java.util.HashMap;
  40. import java.util.Map;
  41. import static com.yyrh.constant.SDKSettings.sp_code;
  42. public class SDKEntry {
  43. public InitCallback initCall;
  44. public LoginCallback loginCall;
  45. public PayCallback payCall;
  46. public LogoutCallback logoutCall;
  47. public ExitCallback exitCall;
  48. public RealNameMsgCallback realNameMsgCallback;
  49. public Activity gameAct;
  50. private ChannelSDK sdk = null;
  51. private YyrhSdkManager manager = null;
  52. private static volatile SDKEntry sdkInstance = null;
  53. private String role_ctime="";
  54. public AdSdkCallback adSdkCallback = new AdSdkCallback() {
  55. @Override
  56. public void onRegisterSuccess(String msg) {
  57. AdvertiseManager.defaultManager(gameAct).registration(gameAct,msg);
  58. }
  59. @Override
  60. public void onLoginSuccess(String msg) {
  61. AdvertiseManager.defaultManager(gameAct).login(gameAct,msg);
  62. }
  63. @Override
  64. public void onPaySuccess(HashMap<String, Object> map) {
  65. AdvertiseManager.defaultManager(gameAct).paymentFinish(gameAct,map);
  66. }
  67. @Override
  68. public void onCreateOrder(HashMap<String, Object> map) {
  69. AdvertiseManager.defaultManager(gameAct).callPayment(gameAct,map);
  70. }
  71. @Override
  72. public void onUpLoadRoleInfo(String type, RoleInfo roleInfo) {
  73. AdvertiseManager.defaultManager(gameAct).upLoadRoleInfo(gameAct,type,roleInfo);
  74. }
  75. @Override
  76. public void onResume(Activity activity) {
  77. AdvertiseManager.defaultManager(activity).onResume(activity);
  78. }
  79. @Override
  80. public void onPause(Activity activity) {
  81. AdvertiseManager.defaultManager(activity).onPause(activity);
  82. }
  83. @Override
  84. public void onDestory(Activity activity) {
  85. AdvertiseManager.defaultManager(activity).onDestory(activity);
  86. }
  87. @Override
  88. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  89. AdvertiseManager.defaultManager(gameAct).onRequestPermissionsResult(requestCode,permissions,grantResults);
  90. }
  91. @Override
  92. public void onExitGame(Activity activity) {
  93. AdvertiseManager.defaultManager(activity).onExitGame(activity);
  94. }
  95. };
  96. public ChannelSdkCallback tCallBack = new ChannelSdkCallback() {
  97. @Override
  98. public void onSetChannelTagCallback(String msg) {
  99. }
  100. @Override
  101. public void onInitCallback(boolean success, String msg) {
  102. if (success){
  103. initCall.onInitSuccess(msg);
  104. }else{
  105. new TosUtil(gameAct,"blue", msg).show();
  106. initCall.onInitFailed(msg);
  107. }
  108. }
  109. @Override
  110. public void onLoginChannelCallback(String msg) {
  111. NetRequestApi.loginWithChannel(gameAct,msg,loginCall);
  112. }
  113. @Override
  114. public void onLogOutCallback(String msg) {
  115. logoutCall.onLogoutSuccess();
  116. }
  117. @Override
  118. public void onPayFinishCallback(boolean success, String msg) {
  119. if (success){
  120. payCall.onPaySuccess(msg);
  121. }else{
  122. payCall.onPayFailed(msg);
  123. }
  124. }
  125. @Override
  126. public void onExiGameCallback(boolean success, String msg) {
  127. exitCall.onExit(true);
  128. }
  129. @Override
  130. public void onPayExtParamCallback(HashMap<String, String> payInfo, String url) {
  131. NetRequestApi.payChannelNotify(payInfo,url);
  132. }
  133. @Override
  134. public void onGetChannelRealNameCallback(boolean isRealName, String report_type, String channelRealNameInfo) {
  135. if (isRealName){
  136. NetRequestApi.recordUserRealNameInfo(gameAct,report_type,channelRealNameInfo);
  137. }else{
  138. realNameMsgCallback.onLoadRealNameMsg(false,"");
  139. }
  140. }
  141. @Override
  142. public void onLoginChannelFail(String msg) {
  143. new TosUtil(gameAct,"blue", msg).show();
  144. sdk.SDKLoginChannelFail(msg);
  145. }
  146. @Override
  147. public void onLoginChannelSuccess(String msg) {
  148. sdk.SDKLoginChannelSuccess(msg);
  149. }
  150. @Override
  151. public void onUploadUserRealNameInfo(String report_type,String msg) {
  152. NetRequestApi.upLoadUserRealNameInfo(report_type,msg);
  153. }
  154. @Override
  155. public void onGetOaidCallback(final boolean isSuccess, final String oaid) {
  156. gameAct.runOnUiThread(new Runnable() {
  157. @Override
  158. public void run() {
  159. if (isSuccess){
  160. if (Build.VERSION.SDK_INT > 28){
  161. SDKSettings.ifa_type = "2";
  162. initCall.onGetOaid(true,oaid);
  163. }else{
  164. initCall.onGetOaid(false,"");
  165. }
  166. SDKSettings.imei = oaid;
  167. Utils.setSharedPreferences("yyrh","simulateImei",oaid,gameAct);
  168. }else{
  169. SDKSettings.imei = ImeiUtil.getImei(gameAct);
  170. initCall.onGetOaid(false,"");
  171. }
  172. Log.i("imei:",SDKSettings.imei);
  173. manager.yyrhInit(gameAct);
  174. }
  175. });
  176. }
  177. @Override
  178. public String onGetChannelUid() {
  179. return SDKSettings.CHANNELUID;
  180. }
  181. };
  182. /**
  183. * 实现单例
  184. */
  185. private SDKEntry() {
  186. }
  187. public static SDKEntry getSdkInstance() {
  188. if (sdkInstance == null) {
  189. synchronized (SDKEntry.class) {
  190. if (sdkInstance == null) {
  191. sdkInstance = new SDKEntry();
  192. }
  193. }
  194. }
  195. return sdkInstance;
  196. }
  197. public void showPrivacyPolicy(Activity activity, UserPolicyCallback userPolicyCallback){
  198. YyrhSdkManager.defaultManager(activity).yyrhShowPolicy(activity,userPolicyCallback);
  199. }
  200. public void initSdk(final Activity activity, final InitCallback callback, final boolean isDebug){
  201. this.gameAct = activity;
  202. this.initCall = callback;
  203. sdk = ChannelSDK.getInstance();
  204. manager = YyrhSdkManager.defaultManager(activity);
  205. sdk.SDKInit(activity,tCallBack);
  206. InputStream inputStream = null;
  207. try {
  208. inputStream = activity.getAssets().open("yyrh_start_image.jpg");
  209. } catch (IOException e) {
  210. }
  211. if(inputStream != null){
  212. new GameSplashDialog(activity, ResourceUtil.getStyleId(activity,"yyrh_welcome_dialog")).show();
  213. }
  214. int checkResult;
  215. if (PermissionUtils.checkIsHasPermission(activity,PermissionUtils.CODE_READ_PHONE_STATE) == 0 &&
  216. PermissionUtils.checkIsHasPermission(activity,PermissionUtils.CODE_WRITE_EXTERNAL_STORAGE) == 0){
  217. checkResult = 0;
  218. }else{
  219. checkResult = -1;
  220. }
  221. switch (checkResult){
  222. case 0 :
  223. AdvertiseManager.defaultManager(activity).advertiseInit(activity);
  224. manager.yyrhInitDevice(activity, isDebug);
  225. break;
  226. case -1 :
  227. String[] permissions = new String[]{Permission.READ_PHONE_STATE,Permission.WRITE_EXTERNAL_STORAGE};
  228. EasyPermission.with(activity)
  229. .addPermissions(permissions) //申请打电话权限
  230. .request(new PermissionRequestListener() {
  231. @Override
  232. public void onGrant(Map<String, GrantResult> result) {
  233. //权限申请返回
  234. AdvertiseManager.defaultManager(activity).advertiseInit(activity);
  235. manager.yyrhInitDevice(activity, isDebug);
  236. }
  237. @Override
  238. public void onCancel(String stopPermission) {
  239. //在addRequestPermissionRationaleHandler的处理函数里面调用了NextAction.next(NextActionType.STOP,就会中断申请过程,直接回调到这里来
  240. }
  241. });
  242. break;
  243. }
  244. }
  245. public void login (Activity activity, LoginCallback callback){
  246. this.loginCall = callback;
  247. SdkManager.defaultManager(activity).login(activity);
  248. }
  249. public void pay(final HashMap<String, Object> map,
  250. final PayCallback callback, final Activity activity) {
  251. this.payCall = callback;
  252. YYLog.i("payOrderInit");
  253. map.put("role_ctime",this.role_ctime);
  254. if (SDKSettings.UNAME.equals("")){
  255. new TosUtil(activity,"blue", activity.getString(ResourceUtil.getStringId(activity, "yyrh_login2pay"))).show();
  256. return;
  257. }
  258. NetRequestApi.payOrderInit(map, activity, new PayOrderCallback() {
  259. @Override
  260. public void onPaySuccess(HashMap<String, Object> map) {
  261. adSdkCallback.onCreateOrder(map);
  262. SdkManager.defaultManager(activity).pay(activity, map);
  263. }
  264. @Override
  265. public void onPayFailed(String msg) {
  266. callback.onPayFailed(msg);
  267. }
  268. });
  269. }
  270. public void setSDKLogoutListener(Activity activity, final LogoutCallback callback) {
  271. YYLog.i("SDKLogoutListener");
  272. logoutCall = callback;
  273. SdkManager.defaultManager(activity).setSDKLogoutListener(activity, tCallBack);
  274. }
  275. public void logout(){
  276. YYLog.i("logout");
  277. SdkManager.defaultManager(gameAct).logOut();
  278. }
  279. public void exitGame(Activity activity, final ExitCallback callback) {
  280. YYLog.i("exitGame");
  281. this.exitCall = callback;
  282. SdkManager.defaultManager(activity).exit(activity);
  283. }
  284. public void upLoadRoleInfo(String type, Activity activity,RoleInfo roleInfo){
  285. YYLog.i("sdk uploadUserInfo");
  286. this.role_ctime = roleInfo.getRoleCreateTime();
  287. String roleId = roleInfo.getRoleId();
  288. String roleName = roleInfo.getRoleName();
  289. String roleLevel = roleInfo.getRoleLevel();
  290. String gender = roleInfo.getGender();
  291. String serverId = roleInfo.getServerId();
  292. String serverName = roleInfo.getServerName();
  293. String hasGold = roleInfo.getHasGold();
  294. String vipLevel = roleInfo.getVipLevel();
  295. String roleCreateTime = roleInfo.getRoleCreateTime();
  296. String partyName = roleInfo.getPartyName();
  297. String role_power = roleInfo.getRolePower();
  298. String partyId = roleInfo.getPartyId();
  299. String reincarnationCount = roleInfo.getReincarnationCount();
  300. String charge = roleInfo.getCharge();
  301. if (Utils.judgeStrNull(charge)){
  302. charge = "0";
  303. }
  304. if (Utils.judgeStrNull(roleId) || Utils.judgeStrNull(roleName)
  305. || Utils.judgeStrNull(roleLevel)
  306. || Utils.judgeStrNull(gender)
  307. || Utils.judgeStrNull(serverId)
  308. || Utils.judgeStrNull(serverName)
  309. || Utils.judgeStrNull(hasGold)
  310. || Utils.judgeStrNull(vipLevel)
  311. || Utils.judgeStrNull(roleCreateTime)
  312. || Utils.judgeStrNull(role_power)
  313. || Utils.judgeStrNull(reincarnationCount)) {
  314. YYLog.i("上报参数有空值,请检查: "+ roleInfo.getAllParam());
  315. }else{
  316. YYLog.i("游戏角色信息上报sdk相关参数: "+ roleInfo.getAllParam());
  317. YyrhSdkManager.defaultManager(activity).uploadRoleInfo(type, activity, roleId, roleName, roleLevel, serverId,
  318. serverName, hasGold, vipLevel, role_power, partyId, partyName, roleCreateTime,charge);
  319. SdkManager.defaultManager(activity).uploadRoleInfo(type, activity, roleInfo);
  320. adSdkCallback.onUpLoadRoleInfo(type,roleInfo);
  321. }
  322. }
  323. /**
  324. * 生命周期
  325. */
  326. public void sdkOnStart(Activity activity) {
  327. YYLog.i("sdk OnStart");
  328. SdkManager.defaultManager(activity).sdkOnStart(activity);
  329. }
  330. public void sdkOnCreate(Activity activity,Bundle savedInstanceState) {
  331. YYLog.i("sdk onCreate");
  332. SdkManager.defaultManager(activity).sdkOnCreate(activity, savedInstanceState);
  333. }
  334. public void sdkOnPause(Activity activity) {
  335. YYLog.i("sdk OnPause");
  336. SDKEntry.getSdkInstance().adSdkCallback.onPause(activity);
  337. SdkManager.defaultManager(activity).sdkOnPause(activity);
  338. }
  339. public void sdkOnResume(Activity activity) {
  340. YYLog.i("sdk OnResume");
  341. SDKEntry.getSdkInstance().adSdkCallback.onResume(activity);
  342. SdkManager.defaultManager(activity).sdkOnResume(activity);
  343. }
  344. public void sdkOnRestart(Activity activity) {
  345. YYLog.i("sdk onRestart");
  346. SdkManager.defaultManager(activity).sdkOnRestart(activity);
  347. }
  348. public void sdkOnNewIntent(Activity acitivty, Intent intent) {
  349. YYLog.i("sdk OnNewIntent");
  350. SdkManager.defaultManager(acitivty).sdkOnNewIntent(acitivty, intent);
  351. }
  352. public void sdkOnStop(Activity activity) {
  353. YYLog.i("sdk OnStop");
  354. SdkManager.defaultManager(activity).sdkOnStop(activity);
  355. }
  356. public void onConfigurationChanged(Configuration newConfigs) {
  357. YYLog.i("sdk onConfigurationChanged");
  358. SdkManager.defaultManager(gameAct).onConfigurationChanged(newConfigs);
  359. }
  360. public void sdkOnDestroy(Activity activity) {
  361. YYLog.i("sdk OnDestroy");
  362. SDKEntry.getSdkInstance().adSdkCallback.onDestory(activity);
  363. SdkManager.defaultManager(gameAct).sdkOnDestroy(activity);
  364. }
  365. public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
  366. YYLog.i("sdk onRequestPermissionsResult");
  367. SDKEntry.getSdkInstance().adSdkCallback.onRequestPermissionsResult(requestCode,permissions,grantResults);
  368. SdkManager.defaultManager(gameAct).onRequestPermissionsResult(requestCode, permissions, grantResults);
  369. }
  370. public void onActivityResult(Activity ac,int requestCode, int resultCode, Intent data) {
  371. YYLog.i("sdk onActivityResult");
  372. SdkManager.defaultManager(gameAct).onActivityResult(ac, requestCode, resultCode, data);
  373. }
  374. public void onWindowFocusChanged(Activity activity, boolean hasFocus){
  375. YYLog.i("sdk onWindowFocusChanged");
  376. SdkManager.defaultManager(gameAct).onWindowFocusChanged(activity, hasFocus);
  377. }
  378. public void getRealNameInfo(Activity activity, RealNameMsgCallback realNameMsgCallback){
  379. this.realNameMsgCallback = realNameMsgCallback;
  380. if (Utils.getTextIsNull(SDKSettings.UNAME)){
  381. new TosUtil(activity,"blue", activity.getString(ResourceUtil.getStringId(activity, "yyrh_login2pay"))).show();
  382. return;
  383. }
  384. SdkManager.defaultManager(gameAct).getRealNameInfo(activity, realNameMsgCallback);
  385. }
  386. }