diff --git a/app/build.gradle b/app/build.gradle index 08a4b4c..2cc8f04 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { - applicationId "com.hnjc.wjtx.mi" + applicationId "com.hnjc.wjtx.mz" minSdkVersion 18 targetSdkVersion 28 versionCode 1 @@ -12,10 +12,20 @@ android { abiFilters 'armeabi-v7a' } } + signingConfigs { + release { + storeFile file("../key/publish_key") + storePassword "7654321Kingsome_" + keyAlias "meizu" + keyPassword "7654321Kingsome_" + v2SigningEnabled false + } + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } sourceSets { @@ -36,7 +46,6 @@ android { dependencies { implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') - implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.android.volley:volley:1.1.1' implementation 'org.greenrobot:eventbus:3.2.0' } diff --git a/app/libs/MzOnlineGameSDK_6.1.3_P.jar b/app/libs/MzOnlineGameSDK_6.1.3_P.jar new file mode 100644 index 0000000..710a3b8 Binary files /dev/null and b/app/libs/MzOnlineGameSDK_6.1.3_P.jar differ diff --git a/app/libs/android-support-v4.jar b/app/libs/android-support-v4.jar new file mode 100644 index 0000000..187bdf4 Binary files /dev/null and b/app/libs/android-support-v4.jar differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d5882f7..a4c4100 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,57 +1,62 @@ + package="com.hnjc.wjtx.mz"> + + - + - - - + + + + + + android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" + android:usesCleartextTraffic="true"> - - + android:theme="@style/SplashTheme"> - - - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/hnjc/wjtx/JCApplication.java b/app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java similarity index 50% rename from app/src/main/java/com/hnjc/wjtx/JCApplication.java rename to app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java index e040a76..d9ccb59 100644 --- a/app/src/main/java/com/hnjc/wjtx/JCApplication.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java @@ -1,12 +1,17 @@ -package com.hnjc.wjtx; +package com.hnjc.wjtx.mz; import android.app.Application; import android.util.Log; +import com.meizu.gamesdk.online.core.MzGameCenterPlatform; + public class JCApplication extends Application { @Override public void onCreate() { super.onCreate(); Log.i("JCApplication", "JCApplication onCreate"); + String appId = "3345357"; + String appKey = "8ece854e1f9c4e50844bb14b8e0a29c8"; + MzGameCenterPlatform.init(this, appId, appKey); } } diff --git a/app/src/main/java/com/hnjc/wjtx/LaunchActivity.java b/app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java similarity index 97% rename from app/src/main/java/com/hnjc/wjtx/LaunchActivity.java rename to app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java index 1e23c84..c017c5d 100644 --- a/app/src/main/java/com/hnjc/wjtx/LaunchActivity.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx; +package com.hnjc.wjtx.mz; import android.Manifest; import android.app.Activity; @@ -12,12 +12,12 @@ import android.util.Log; import android.widget.ProgressBar; import android.widget.TextView; -import com.hnjc.wjtx.net.DownloadRunnable; -import com.hnjc.wjtx.net.TaskInfo; -import com.hnjc.wjtx.net.WebApi; -import com.hnjc.wjtx.util.AssetsUtil; -import com.hnjc.wjtx.util.StringUtil; -import com.hnjc.wjtx.util.UnzipRunnable; +import com.hnjc.wjtx.mz.net.DownloadRunnable; +import com.hnjc.wjtx.mz.net.TaskInfo; +import com.hnjc.wjtx.mz.net.WebApi; +import com.hnjc.wjtx.mz.util.AssetsUtil; +import com.hnjc.wjtx.mz.util.StringUtil; +import com.hnjc.wjtx.mz.util.UnzipRunnable; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/com/hnjc/wjtx/MainActivity.java b/app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java similarity index 64% rename from app/src/main/java/com/hnjc/wjtx/MainActivity.java rename to app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java index f0740e0..a1f1e0c 100755 --- a/app/src/main/java/com/hnjc/wjtx/MainActivity.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java @@ -1,7 +1,6 @@ -package com.hnjc.wjtx; +package com.hnjc.wjtx.mz; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; @@ -16,10 +15,17 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toast; -import com.hnjc.wjtx.util.AssetsUtil; -import com.hnjc.wjtx.util.IdUtil; -import com.hnjc.wjtx.util.StorageUtil; -import com.hnjc.wjtx.util.StringUtil; +import com.hnjc.wjtx.mz.util.AssetsUtil; +import com.hnjc.wjtx.mz.util.StorageUtil; +import com.hnjc.wjtx.mz.util.StringUtil; +import com.meizu.gamesdk.model.callback.MzExitListener; +import com.meizu.gamesdk.model.callback.MzLoginListener; +import com.meizu.gamesdk.model.callback.MzPayListener; +import com.meizu.gamesdk.model.model.LoginResultCode; +import com.meizu.gamesdk.model.model.MzAccountInfo; +import com.meizu.gamesdk.model.model.MzBuyInfo; +import com.meizu.gamesdk.model.model.PayResultCode; +import com.meizu.gamesdk.online.core.MzGameCenterPlatform; import org.egret.egretnativeandroid.EgretNativeAndroid; import org.json.JSONException; @@ -27,12 +33,13 @@ import org.json.JSONObject; //Android项目发布设置详见doc目录下的README_ANDROID.md -public class MainActivity extends Activity { +public class MainActivity extends Activity implements MzLoginListener, MzPayListener { private final String TAG = "MainActivity"; private EgretNativeAndroid nativeAndroid; private ImageView launchScreenImageView = null; private FrameLayout rootLayout = null; private Vibrator vibrator; + private MzAccountInfo accountInfo; @Override @@ -87,18 +94,15 @@ public class MainActivity extends Activity { public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { //声明并初始化弹出对象 - AlertDialog.Builder builder=new AlertDialog.Builder(this); - builder.setTitle("提示:"); - builder.setMessage("是否退出"); - //设置确认按钮 - builder.setNegativeButton("确定", (dialog, which) -> { - nativeAndroid.exitGame(); - finish();//退出程序 + MzGameCenterPlatform.exitSDK(this, new MzExitListener() { + @Override + public void callback(int i, String s) { + if (i == MzExitListener.CODE_SDK_EXIT) { + nativeAndroid.exitGame(); + finish();//退出程序 + } + } }); - //设置取消按钮 - builder.setPositiveButton("取消",null); - //显示弹框 - builder.show(); return true; } else { return super.onKeyDown(keyCode, keyEvent); @@ -163,18 +167,7 @@ public class MainActivity extends Activity { Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show(); }); nativeAndroid.setExternalInterface("getUid", message -> { - //TODO: 平台的登陆 - JSONObject obj = new JSONObject(); - try { - obj.put("openid", IdUtil.getUid(this)); - obj.put("token", ""); - // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode - obj.put("errorcode", 1); - nativeAndroid.callExternalInterface("sendUidToJS", obj.toString()); - } catch (JSONException e) { - e.printStackTrace(); - nativeAndroid.callExternalInterface("loginCancel", ""); - } + MzGameCenterPlatform.login(this, this); }); nativeAndroid.setExternalInterface("@onState", message -> { @@ -199,14 +192,24 @@ public class MainActivity extends Activity { String productCode = jsonObject.getString("productCode"); int count = jsonObject.getInt("count"); //TODO: 平台的支付 - JSONObject obj = new JSONObject(); - try { - obj.put("errcode", 0); - obj.put("errmsg", ""); - nativeAndroid.callExternalInterface("payResult", obj.toString()); - } catch (JSONException e) { - e.printStackTrace(); - } + Bundle buyBundle = new MzBuyInfo() + .setBuyCount(1) +// .setCpUserInfo(cpUserInfo) +// .setOrderAmount(1) +// .setOrderId(cpOrderId) +// .setPerPrice(count) +// .setProductBody(productBody) +// .setProductId(productId) +// .setProductSubject(productSubject) +// .setProductUnit(productUnit) +// .setSign(sign) +// .setSignType(signType) +// .setCreateTime(createTime) +// .setAppid(appid) +// .setUserUid(uid) +// .setPayType(payType) + .toBundle(); + MzGameCenterPlatform.payOnline(MainActivity.this, buyBundle, MainActivity.this); } catch (JSONException e) { e.printStackTrace(); } catch ( Exception e ) { @@ -266,4 +269,84 @@ public class MainActivity extends Activity { launchScreenImageView = null; } + /** + * 登录回调 + * 请处理相关回调事件 + * + * @param code 错误码 + * @message 错误信息 + * @MzAccountInfo 账号信息 + */ + @Override + public void onLoginResult(int code, final MzAccountInfo accountInfo, final String message) { + switch (code) { + case LoginResultCode.LOGIN_SUCCESS: + this.accountInfo = accountInfo; //保存登录信息,用于查询实名认证信息 + JSONObject obj = new JSONObject(); + try { + obj.put("openid", accountInfo.getUid()); + obj.put("token", accountInfo.getSession()); + // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode + nativeAndroid.callExternalInterface("sendUidToJS", obj.toString()); + } catch (JSONException e) { + e.printStackTrace(); + nativeAndroid.callExternalInterface("loginCancel", ""); + } + break; + case LoginResultCode.LOGIN_LOGOUT: + nativeAndroid.callExternalInterface("loginOut", ""); + break; + + + default: + JSONObject obj1 = new JSONObject(); + try { + obj1.put("errcode", code); + // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode + nativeAndroid.callExternalInterface("sendUidToJS", message); + } catch (JSONException e) { + e.printStackTrace(); + nativeAndroid.callExternalInterface("loginCancel", ""); + } +// runOnUiThread(new Runnable() { +// @Override +// public void run() { +// showMsg(message); +// } +// }); + break; + } + + } + + /** + * 支付录回调 + * 请处理相关回调事件 + * + * @param code 错误码 + * @message 错误信息 + * @bundle 支付信息 + */ + @Override + public void onPayResult(int code, final Bundle bundle, final String message) { + JSONObject obj = new JSONObject(); + try { + obj.put("errcode", code); + obj.put("errmsg", message); + } catch (JSONException e) { + e.printStackTrace(); + } + switch (code) { + case PayResultCode.PAY_SUCCESS: //支付成功 + MzBuyInfo payInfo = MzBuyInfo.fromBundle(bundle); + Log.i(TAG, "支付成功: " + payInfo.getOrderId() + " | " + payInfo.getPerPrice()); + case PayResultCode.PAY_ERROR_CANCEL: //支付取消 + Log.i(TAG, "支付取消: "); + break; + default: + Log.i(TAG, "支付错误: code: " + code + " | " + message); + break; + } + nativeAndroid.callExternalInterface("payResult", obj.toString()); + } } diff --git a/app/src/main/java/com/hnjc/wjtx/net/AppRequest.java b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java similarity index 98% rename from app/src/main/java/com/hnjc/wjtx/net/AppRequest.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java index be6b956..71375a9 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/AppRequest.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; diff --git a/app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java similarity index 98% rename from app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java index 225c20c..b3439b6 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import android.content.Context; diff --git a/app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java similarity index 81% rename from app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java index fadc4c7..04b5140 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import org.json.JSONObject; diff --git a/app/src/main/java/com/hnjc/wjtx/net/BaseMode.java b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java similarity index 94% rename from app/src/main/java/com/hnjc/wjtx/net/BaseMode.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java index 093b319..654a9b8 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/BaseMode.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; public class BaseMode { private boolean status; diff --git a/app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java b/app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java similarity index 99% rename from app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java index ccae946..d4db2ce 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import android.util.Log; diff --git a/app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java similarity index 92% rename from app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java index aff1bc0..1c6be37 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; public class RequestErrorEvent { private int type; diff --git a/app/src/main/java/com/hnjc/wjtx/net/RequestListener.java b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java similarity index 82% rename from app/src/main/java/com/hnjc/wjtx/net/RequestListener.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java index bbfc13a..c2099a8 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/RequestListener.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import org.json.JSONObject; diff --git a/app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java b/app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java similarity index 98% rename from app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java index 208834d..fd2eb23 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; public class TaskInfo { private String name;//文件名 diff --git a/app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java similarity index 94% rename from app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java index 87497b8..4ffbb65 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import android.content.Context; diff --git a/app/src/main/java/com/hnjc/wjtx/net/WebApi.java b/app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java similarity index 96% rename from app/src/main/java/com/hnjc/wjtx/net/WebApi.java rename to app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java index 5ab0f28..f6a4365 100644 --- a/app/src/main/java/com/hnjc/wjtx/net/WebApi.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.net; +package com.hnjc.wjtx.mz.net; import android.content.Context; diff --git a/app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java similarity index 99% rename from app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java index 73f1481..6612317 100644 --- a/app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.util; +package com.hnjc.wjtx.mz.util; import android.content.Context; import android.content.res.AssetManager; diff --git a/app/src/main/java/com/hnjc/wjtx/util/IdUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java similarity index 88% rename from app/src/main/java/com/hnjc/wjtx/util/IdUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java index a554367..432d9a8 100644 --- a/app/src/main/java/com/hnjc/wjtx/util/IdUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.util; +package com.hnjc.wjtx.mz.util; import android.content.ContentResolver; import android.content.Context; @@ -20,7 +20,7 @@ public class IdUtil { while (enumeration.hasMoreElements()) { NetworkInterface netInterface = enumeration.nextElement(); if (netInterface.getName().equals("wlan0")) { - return com.hnjc.wjtx.util.StringUtil.getMD5(netInterface.getHardwareAddress().toString(), false); + return com.hnjc.wjtx.mz.util.StringUtil.getMD5(netInterface.getHardwareAddress().toString(), false); } } } catch (Exception e) { @@ -59,9 +59,9 @@ public class IdUtil { ContentResolver resolver = context.getContentResolver(); String wifiMac = getWifiMac(); String androidId = getAndroidId(resolver); - if (com.hnjc.wjtx.util.StringUtil.notBlank(androidId)) { + if (com.hnjc.wjtx.mz.util.StringUtil.notBlank(androidId)) { return androidId; - } else if (com.hnjc.wjtx.util.StringUtil.notBlank(wifiMac)) { + } else if (com.hnjc.wjtx.mz.util.StringUtil.notBlank(wifiMac)) { return wifiMac; } else { return getUniquePsuedoID(); diff --git a/app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java similarity index 96% rename from app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java index 1465067..827bc19 100644 --- a/app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.util; +package com.hnjc.wjtx.mz.util; import android.content.SharedPreferences; diff --git a/app/src/main/java/com/hnjc/wjtx/util/StringUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java similarity index 98% rename from app/src/main/java/com/hnjc/wjtx/util/StringUtil.java rename to app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java index e407fc9..dcf0770 100644 --- a/app/src/main/java/com/hnjc/wjtx/util/StringUtil.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java @@ -1,4 +1,4 @@ -package com.hnjc.wjtx.util; +package com.hnjc.wjtx.mz.util; import java.security.MessageDigest; diff --git a/app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java b/app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java similarity index 97% rename from app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java rename to app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java index 5837b1f..3e87fc9 100644 --- a/app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java +++ b/app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java @@ -1,8 +1,8 @@ -package com.hnjc.wjtx.util; +package com.hnjc.wjtx.mz.util; import android.util.Log; -import com.hnjc.wjtx.net.TaskInfo; +import com.hnjc.wjtx.mz.net.TaskInfo; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b6b991..2288f62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,7 +3,7 @@ 下载游戏资源 进入游戏 preload - http://local/index.html?channel=7103 + http://local/index.html?channel=7108 1.0.0 load_back 获取游戏版本 diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..4495c28 --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/assets/MzGameCenterService_6.1.3.apk b/assets/MzGameCenterService_6.1.3.apk new file mode 100644 index 0000000..02363ac Binary files /dev/null and b/assets/MzGameCenterService_6.1.3.apk differ diff --git a/key/publish_key b/key/publish_key index 4b363cd..6673c0b 100644 Binary files a/key/publish_key and b/key/publish_key differ diff --git a/platform.js b/platform.js new file mode 100644 index 0000000..98080f3 --- /dev/null +++ b/platform.js @@ -0,0 +1,476 @@ +function getQueryString(name) { + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); + var r = window.location.search.substr(1).match(reg); + return r ? decodeURIComponent(r[2]) : ''; +} + +class GamePlatform { + + constructor() { + this.name = 'native'; + this.version = "1.0.7"; + this.jcGameId = 1009; + this.jcChannelId = getQueryString('channel') ? Number(getQueryString('channel')) : 7103; + console.log('jcchannelid: ' + this.jcChannelId); + this.isDev = true; + this.orderIdUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=Pay&a=preOrder`; + this.checkRegRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=checkRegisterReward`; + this.regRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=registerReward`; + this.svrListUrl = `https://game1009gate${this.isDev ? '-test':''}.kingsome.cn/wjtxgate/common/login.aspx?pid=${this.jcChannelId}`; + this.wssHost = `game1009game${this.isDev ? '-test' : ''}.kingsome.cn`; + this.other = new GamePlatformOther(); + } + login() { + return new Promise((resolve, reject) => { + jc.init({ + channelid: this.jcChannelId, + gameid: this.jcGameId, + isoffical: !this.isDev, + }); + console.log('jcfw init finished 2'); + jc.loginUser({ + success: function(res) { + console.log('登录成功', JSON.stringify(res)); + wxUserData.open_id = res.openid; + wxUserData.nick_name = res.nickname; + wxUserData.avatar_url = res.avatar_url; + wxUserData.gender = res.sex; + platform.code = res.openid; + //res.session_key + platform.session = res.session_id; + resolve(res); + }, + fail: function(neterr, logicerr, errmsg) { + console.log('登录错误'); + console.log(neterr, logicerr, errmsg); + reject(errmsg); + } + }); + }); + } + + getUserInfo() { + return new Promise((resolve, reject) => { + platform.login().then(res => { + console.log("登录成功"); + resolve(); + + }).catch(err => { + reject(err); + }); + }) + } + + // obj { data, success, fail } + + _getOrderId(pid, uid, sid, callback) { + var url = jc.gg.extcfg['prePayUrl'] || this.orderIdUrl; + var reqData = { + openid: platform.code, + produce: pid, + gameid: platform.jcGameId, + session: platform.session, + uid: uid, + server: sid, + platform: platform.jcChannelId, + role_name: giant.Core.hero.name, + role_level: giant.Core.hero.level, + server_name: giant.Core.serverVO.name + }; + + var loginCount = 0; + var loginMaxCount = 1; + console.log('pre order with url: ' + url); + var request = function () { + platform.urlRequest({ + url: url, + method: 'GET', + data: reqData, + success: function (res) { + console.log("_getOrderId success", JSON.stringify(res)); + if (res && res.data) { + // session检测失败,需要登录 + if (res.data.sessionCheck != null) { + if (loginCount >= loginMaxCount) { + callback && callback(false, "session失效,请重新登录"); + return; + } + loginCount++; + + platform.login().then(res => { + request(); + }).catch(err => { + callback && callback(false, "session失效,login失败,请重新登录"); + }); + } + else { + callback && callback(true, res.data.prepayId); + } + } + else { + callback && callback(false, "接口返回有误,请重试"); + } + }, + fail: function (err) { + console.log('pay with err: ' + JSON.stringify(err)); + callback && callback(false, "接口访问失败,请重试"); + } + }) + + } + + request(); + } + + pay(obj) { + var orderInfo = null; + console.warn("pay obj", JSON.stringify(obj)); + + var onOrderIdResult = function (isOk, data) { + if (isOk) { + try { + var payData = JSON.parse(data); + Object.assign(payData, {count: 1}); + orderInfo = payData; + realPay(); + } catch (err) { + obj.fail && obj.fail({ tipMessage: '解析接口数据失败' }); + } + + } + else { + obj.fail && obj.fail({ tipMessage: data }); + } + } + + var realPay = function () { + console.log("pay orderInfo", orderInfo); + if (!orderInfo) return; + jc.plat.pay(orderInfo) + .then(data => { + if (data.errcode === 0) { + console.log("[quick]pay success", JSON.stringify(data)); + obj.success && obj.success(); + } else { + console.warn("pay fail", JSON.stringify(data)); + obj.fail && obj.fail({ tipMessage: "充值失败" , err: data.errmsg }); + } + }) + .catch(err => { + console.warn("pay fail", JSON.stringify(err)); + obj.fail && obj.fail({ tipMessage: "充值失败" , err: err.errmsg }); + }) + } + + platform._getOrderId(obj.data.goodsId, obj.data.uid, obj.data.sid, onOrderIdResult); + } + concatServerList(res0, res1) { + res0.data.lastWorldIds = res1.data.lastWorldIds.concat(res0.data.lastWorldIds); + if (res1 && res1.data) { + if (res1.data.servers) { + for (let data of res1.data.servers) { + data.comp = 'jc'; + res0.data.servers.push(data); + } + } + } + if (res1 && res1.data && res1.data.notice) { + res0.data.notice = res1.data.notice; + } + return res0; + } + requestServerList() { + var url = this.svrListUrl; + return this.getServerList(url); + } + + getServerList(url) { + return new Promise((resolve, reject) => { + let data = { + openId: wxUserData.open_id + } + platform.urlRequest({ + url: url, + method: 'GET', + data: data, + success: function (res) { + resolve(res); + }, + fail: function (err) { + console.log('getServerList fail with url:', url); + resolve({data: { + lastWorldIds: [], + servers: [], + }}); + } + }) + }) + } + + getWxWebResRoot(configUrl) { + return new Promise((resolve, reject) => { + platform.urlRequest({ + url: configUrl, + method: "GET", + success: function (res) { + let newObj = res.data; + constantRes.wxWebResRoot = constantRes.root + newObj.version + "/"; + resolve(); + } + }); + }); + } + + urlRequest(obj) { + var url = obj.url; + var method = obj.method.toUpperCase(); + var data = obj.data; + var postDataRaw = obj.postDataRaw === true; + var success = obj.success; + var fail = obj.fail; + + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + if (xhr.status >= 200 && xhr.status < 400) { + var retData = xhr.responseText; + try { + retData = JSON.parse(retData); + success && success({ + data: retData + }); + } catch (err) { + fail && fail(); + } + + } else if (xhr.status >= 400) { + fail && fail(); + } + } + }; + + xhr.onerror = function (e) { + fail && fail(); + }; + + if (method === "POST") { + var dataStr = null; + if (postDataRaw) { + dataStr = data; + } + else { + if (data) { + dataStr = ""; + for (var key in data) { + if (dataStr != "") { + dataStr += "&"; + } + dataStr += key + "=" + data[key]; + } + } + } + xhr.open(method, url); + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.send(dataStr); + } else { + var paramStr = ""; + if (data) { + for (var key in data) { + if (paramStr != "") { + paramStr += "&"; + } + paramStr += key + "=" + encodeURIComponent(data[key]); + } + if (paramStr != "") { + paramStr = (url.indexOf("?") == -1 ? "?" : "&") + paramStr; + } + } + url += paramStr; + url += `&_d=${Date.now()}` + console.log(url); + xhr.open(method, url); + xhr.send(); + } + } + +} + +class GamePlatformOther { + constructor() { + this.localFileName = 'userData_'; + } + checkRegisterReward(uid, sid) { + return new Promise((resolve, reject) => { + var url = jc.gg.extcfg['checkRegRewardUrl'] || platform.checkRegRewardUrl; + console.log('checkRegisterReward req', uid, sid, url); + platform.urlRequest({ + url: url, + method: 'GET', + data: { + uid: uid, + server: sid, + }, + success: function (res) { + console.log("checkRegisterReward res", res); + if (res && res.data) { + if (res.data.code == 1) { + resolve && resolve(true); + } + else { + resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error); + } + } + else { + reject && reject("接口返回有误,请重试"); + } + }, + fail: function (err) { + reject && reject("接口访问失败,请重试"); + } + }); + }); + } + + getRegisterReward(uid, sid, name) { + return new Promise((resolve, reject) => { + var url = jc.gg.extcfg['RegRewardUrl'] || platform.regRewardUrl; + console.log('getRegisterReward req', uid, sid, name, url); + + var count = 0; + var maxCount = 20; + var interval = 3; + + var doRequest = function () { + platform.urlRequest({ + url: url, + method: 'GET', + data: { + uid: uid, + server: sid, + name: name + }, + success: function (res) { + console.log("getRegisterReward res", res); + if (res && res.data) { + if (res.data.code == 1) { + resolve && resolve(true); + } + else { + count++; + if (count <= maxCount) { + setTimeout(doRequest, interval * 1000); + } + else { + resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error); + } + } + } + else { + reject && reject("接口返回有误,请重试"); + } + }, + fail: function (err) { + reject && reject("接口访问失败,请重试"); + } + }); + } + + doRequest(); + }); + } + + reportRoleCreate(isNew) { + let data = { + isCreateRole: isNew, + roleCreateTime: Date.now(), + serverId: giant.Core.serverVO.id, + serverName: giant.Core.serverVO.name, + userRoleId: giant.Core.hero.id, + userRoleName: giant.Core.hero.name, + userRoleBalance: giant.Core.hero.coin, + vipLevel: giant.Core.hero.vipLevel, + userRoleLevel: giant.Core.hero.level, + partyId: 0, + partyName: giant.Core.hero.camp, + gameRoleGender: giant.Core.hero.gender, + gameRolePower: giant.Core.hero.power, + }; + jc.plat.reportRoleInfo(data) + .then(res => {}) + .catch(err=> {}) + } + + setLocalStorage(key, value) { + let self = this; + if (key === 'lastSvr') { + giant.Core.externalParams.lastWordId = value; + } + if (typeof localStorage != "undefined") { + localStorage.setItem(self.localFileName + key, value); + } + else { + console.warn("localStorage is null, on set"); + } + } + + getLocalStorage(key) { + let self = this; + if (key === 'lastSvr' && giant.Core.externalParams.lastWordId) { + return giant.Core.externalParams.lastWordId; + } + if (typeof localStorage != "undefined") { + var dataStr = localStorage.getItem(self.localFileName + key); + if (key === 'lastSvr') { + giant.Core.externalParams.lastWordId = dataStr; + } + return dataStr; + } + else { + console.warn("localStorage is null, on get"); + return null; + } + } + + getLiuHaiHeight() { + + var ratioScreen = egret.Capabilities.boundingClientHeight / egret.Capabilities.boundingClientWidth; + var ratioGameDesign = 1136 / 640; + + console.log("getLiuHaiHeight", ratioScreen, ratioGameDesign); + + // 跟游戏分辨率相比,相等没有刘海 + if (Math.abs(ratioScreen - ratioGameDesign) < 0.01) { + return 0; + } + else { + // 默认刘海值50 + return 50; + } + } +} + +class PlatUserData { + + constructor() { + this.open_id = null; + this.nick_name = null; + this.avatar_url = null; + this.gender = null; + } + + getOpenId() { + return this.open_id; + } + +} + +class GameConstant { + constructor() { + this.root = ""; + this.wxWebResRoot = ""; + } +} + +window.platform = new GamePlatform(); +window.wxUserData = new PlatUserData(); +window.constantRes = new GameConstant();