Forráskód Böngészése

1、优化通用回调接口
2、优化生命周期接口
3、ysdk渠道更新(进行中)

fluty 4 éve
szülő
commit
213f702752
32 módosított fájl, 1339 hozzáadás és 346 törlés
  1. 18 17
      app/build.gradle
  2. BIN
      app/fq_bytjz_gdt.jks
  3. 1 1
      app/src/main/AndroidManifest.xml
  4. 9 9
      app/src/main/java/com/funcheer/channel/sdk/MainActivity.java
  5. 11 0
      app/src/main/java/com/tencent/tmgp/xzsjjby/wxapi/WXEntryActivity.java
  6. 1 1
      app/src/main/res/values/strings.xml
  7. 0 2
      build.gradle
  8. 59 69
      fq_channel_mubao/src/main/java/com/fq/channel/sdk/SdkPluginDemo.java
  9. 1 1
      fq_channel_oppo/src/main/assets/fq_config/joint_cfg
  10. 3 1
      fq_channel_oppo/src/main/java/com/fq/channel/sdk/FQApplication.java
  11. 22 141
      fq_channel_oppo/src/main/java/com/fq/channel/sdk/SdkPluginOppo.java
  12. 4 8
      fq_channel_ysdk/build.gradle
  13. BIN
      fq_channel_ysdk/libs/YSDK_Android_1.5.12_c47e6ed.aar
  14. 293 1
      fq_channel_ysdk/src/main/AndroidManifest.xml
  15. BIN
      fq_channel_ysdk/src/main/assets/MidasPay.zip
  16. 4 0
      fq_channel_ysdk/src/main/assets/fq_config/joint_cfg
  17. 24 0
      fq_channel_ysdk/src/main/assets/ysdkconf.ini
  18. 19 0
      fq_channel_ysdk/src/main/java/com/fq/channel/sdk/FQApplication.java
  19. 635 0
      fq_channel_ysdk/src/main/java/com/fq/channel/sdk/SdkPluginYsdk.java
  20. 67 0
      fq_channel_ysdk/src/main/java/com/fq/channel/sdk/WXCallBackActivity.java
  21. BIN
      fq_channel_ysdk/src/main/res/drawable/fq_iv_hide_left.png
  22. BIN
      fq_channel_ysdk/src/main/res/drawable/fq_iv_hide_right.png
  23. 34 0
      fq_channel_ysdk/src/main/res/layout/fq_ysdk_login.xml
  24. 29 0
      fq_channel_ysdk/src/main/res/values/fq_ysdk_styles.xml
  25. 0 3
      fq_channel_ysdk/src/main/res/values/strings.xml
  26. 1 1
      fq_plugin_api/build.gradle
  27. 7 2
      fq_plugin_api/src/main/assets/fqcfg
  28. 21 22
      fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGame.java
  29. 53 45
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/interfaces/FQPluginApi.java
  30. 15 14
      fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiPlugin.java
  31. 6 6
      gradle.properties
  32. 2 2
      settings.gradle

+ 18 - 17
app/build.gradle

@@ -1,42 +1,43 @@
 apply plugin: 'com.android.application'
 
-apply plugin: 'kotlin-android'
-
-apply plugin: 'kotlin-android-extensions'
-
 android {
     compileSdkVersion 26
     defaultConfig {
-        applicationId "com.xinsglsbw.net.nearme.gamecenter"
+        applicationId "com.tencent.tmgp.xzsjjby"
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
         versionName "1.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        signingConfig signingConfigs.debug
     }
 
     signingConfigs {
-        release {
-            storeFile file("./fqgamesdkkeystore.jks")
-            storePassword '201868'
-            keyPassword '201868'
-            keyAlias 'fqgamesdkkeystore.jks'
-//            v2SigningEnabled false
-        }
+
+//        debug {
+//            storeFile file("./fqgamesdkkeystore.jks")
+//            storePassword '201868'
+//            keyPassword '201868'
+//            keyAlias 'fqgamesdkkeystore.jks'
+//        }
+//        ysdk
         debug{
-            storeFile file("./fqgamesdkkeystore.jks")
-            storePassword '201868'
-            keyPassword '201868'
-            keyAlias 'fqgamesdkkeystore.jks'
-//            v2SigningEnabled false
+            storeFile file('C:\\ProgramFiles\\AS_WorkSpace\\FQChannelSDK\\app\\fq_bytjz_gdt.jks')
+            storePassword '201999'
+            keyPassword '201999'
+            keyAlias 'fq_bytjz_gdt.jks'
         }
     }
 
     buildTypes {
         release {
             minifyEnabled false
+            signingConfig signingConfigs.debug
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
+        debug{
+            signingConfig signingConfigs.debug
+        }
     }
 }
 

BIN
app/fq_bytjz_gdt.jks


+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -17,7 +17,7 @@
 
     <activity android:name="com.funcheer.channel.sdk.MainActivity"
         android:configChanges="orientation|keyboardHidden|screenSize"
-        android:launchMode="singleTask"
+        android:launchMode="singleTop"
         android:screenOrientation="portrait"
         android:theme="@style/fq_AppTheme"
         >

+ 9 - 9
app/src/main/java/com/funcheer/channel/sdk/MainActivity.java

@@ -35,7 +35,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
         FqLog.i(TAG, "onCreate: ");
         initUI();
         initSDK();
-        FqGame.onCreate(savedInstanceState);
+        FqGame.onCreate(this,savedInstanceState);
     }
 
     //跟游戏的主Activity走
@@ -47,42 +47,42 @@ public class MainActivity extends Activity implements View.OnClickListener {
 
     @Override
     protected void onNewIntent(Intent intent) {
-        super.onNewIntent(intent);
         FqGame.onNewIntent(intent);
+        super.onNewIntent(intent);
     }
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
         FqGame.onActivityResult(requestCode, resultCode, data);
+        super.onActivityResult(requestCode, resultCode, data);
     }
 
     @Override
     protected void onRestart() {
         super.onRestart();
         FqLog.i(TAG, "onRestart: ");
-        FqGame.onRestart();
+        FqGame.onRestart(this);
     }
 
     @Override
     protected void onStart() {
         super.onStart();
         FqLog.i(TAG, "onStart: ");
-        FqGame.onStart();
+        FqGame.onStart(this);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
         FqLog.i(TAG, "onResume: ");
-        FqGame.onResume();
+        FqGame.onResume(this);
     }
 
     @Override
     protected void onPause() {
         super.onPause();
         FqLog.i(TAG, "onPause: ");
-        FqGame.onPause();
+        FqGame.onPause(this);
 
     }
 
@@ -90,14 +90,14 @@ public class MainActivity extends Activity implements View.OnClickListener {
     protected void onStop() {
         super.onStop();
         FqLog.i(TAG, "onStop: ");
-        FqGame.onStop();
+        FqGame.onStop(this);
     }
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
         FqLog.i(TAG, "onDestroy: ");
-        FqGame.onDestroy();
+        FqGame.onDestroy(this);
     }
 
     private void initUI() {

+ 11 - 0
app/src/main/java/com/tencent/tmgp/xzsjjby/wxapi/WXEntryActivity.java

@@ -0,0 +1,11 @@
+package com.tencent.tmgp.xzsjjby.wxapi;
+
+import com.fq.channel.sdk.WXCallBackActivity;
+
+/**
+ * @Description: 描述
+ * @Author: FLuty
+ * @CreateDate: 2020/4/21 15:58
+ */
+public class WXEntryActivity extends WXCallBackActivity {
+}

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -1,5 +1,5 @@
 <resources>
-    <string name="app_name">FQChannel-OPPO</string>
+    <string name="app_name">FQChannel-YSDK</string>
     <string name="fq_result">result...</string>
 
     <string name="fq_user">用户</string>

+ 0 - 2
build.gradle

@@ -1,7 +1,6 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
-    ext.kotlin_version = '1.3.41'
     repositories {
         google()
         jcenter()
@@ -9,7 +8,6 @@ buildscript {
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:3.5.0'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }

+ 59 - 69
fq_channel_mubao/src/main/java/com/fq/channel/sdk/SdkPluginDemo.java

@@ -11,14 +11,11 @@ import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
 import android.view.KeyEvent;
-import android.widget.Toast;
 
 import com.fq.channel.sdk.base.interfaces.FQPluginApi;
-import com.fq.channel.sdk.base.interfaces.PluginResult;
 import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
-
-import org.json.JSONException;
-import org.json.JSONObject;
+import com.fq.channel.sdk.base.utils.FqLog;
+import com.fq.threelib.gson.JsonObject;
 
 import java.util.Map;
 
@@ -37,9 +34,8 @@ public class SdkPluginDemo extends FQPluginApi {
      */
     @Override
     public void init(Context activity,final PluginResultHandler handler) {
-        Log.i(TAG, "init");
-        handler.onHandlePluginResult(new PluginResult(
-                PluginResult.Status.OK));
+        FqLog.i(TAG, "init");
+        fqSdkSuccess(handler);
     }
 
     /**
@@ -47,7 +43,7 @@ public class SdkPluginDemo extends FQPluginApi {
      */
     @Override
     public void login(final Context activity, final PluginResultHandler handler) {
-        Log.i(TAG, "login");
+        FqLog.i(TAG, "login");
 
         Builder builder = new Builder(activity);
         builder.setTitle("登录");
@@ -55,30 +51,25 @@ public class SdkPluginDemo extends FQPluginApi {
         builder.setCancelable(false);
         builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                JSONObject jo = new JSONObject();
-                try {
-                    jo.put("uid", "uid");
-                    jo.put("token", "token");
-                    handler.onHandlePluginResult(new PluginResult(
-                            PluginResult.Status.OK, jo));
-                } catch (JSONException e) {
-                    e.printStackTrace();
-                }
+
+                JsonObject result = new JsonObject();
+                result.addProperty("uid", "uid");
+                result.addProperty("token", "token");
+
+                loginFqSdkSuccess(handler, "mubao", result);
 
                 dialog.dismiss();
             }
         });
         builder.setNeutralButton("失败", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                handler.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.ERROR, "登录失败"));
+                fqSdkError(handler,"登录失败");
                 dialog.dismiss();
             }
         });
         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                handler.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.CANCEL));
+                fqSdkCancel(handler);
                 dialog.dismiss();
             }
         });
@@ -87,8 +78,7 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                 if (keyCode == KeyEvent.KEYCODE_BACK) {
-                    handler.onHandlePluginResult(new PluginResult(
-                            PluginResult.Status.CANCEL));
+                    fqSdkCancel(handler);
                     dialog.dismiss();
                     return true;
                 }
@@ -101,7 +91,7 @@ public class SdkPluginDemo extends FQPluginApi {
     @Override
     public void pay(final Context activity, final Map<String, Object> map,
                     final PluginResultHandler handler) {
-        Log.i(TAG, "pay map:" + (map != null ? map.toString() : ""));
+        FqLog.i(TAG, "pay map:" + (map != null ? map.toString() : ""));
 
         Builder builder = new Builder(activity);
         builder.setTitle("支付");
@@ -109,22 +99,19 @@ public class SdkPluginDemo extends FQPluginApi {
         builder.setCancelable(false);
         builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                handler.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.OK));
+                fqSdkSuccess(handler);
                 dialog.dismiss();
             }
         });
         builder.setNeutralButton("失败", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                handler.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.ERROR));
+                fqSdkError(handler);
                 dialog.dismiss();
             }
         });
         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                handler.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.CANCEL));
+                fqSdkCancel(handler);
                 dialog.dismiss();
             }
         });
@@ -133,8 +120,7 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                 if (keyCode == KeyEvent.KEYCODE_BACK) {
-                    handler.onHandlePluginResult(new PluginResult(
-                            PluginResult.Status.CANCEL));
+                    fqSdkCancel(handler);
                     dialog.dismiss();
                     return true;
                 }
@@ -152,9 +138,7 @@ public class SdkPluginDemo extends FQPluginApi {
      */
     public void exit(Context context, PluginResultHandler prh) {
         Log.d(TAG, "exit");
-
-        prh.onHandlePluginResult(new PluginResult(
-                PluginResult.Status.CANCEL));
+        exitFqSdk(prh);
     }
 
     /**
@@ -171,8 +155,7 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 Log.d(TAG, "注销成功");
-                cb.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.OK));
+                fqSdkSuccess(cb);
             }
         });
         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@@ -180,15 +163,14 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 Log.d(TAG, "注销失败");
-                cb.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.ERROR));
+                fqSdkError(cb);
             }
         });
         builder.show();
     }
 
     @Override
-    public void changeAccount(Activity activity, final PluginResultHandler prh) {
+    public void changeAccount(Activity activity, final PluginResultHandler cb) {
         Log.d(TAG, " changeAccount ");
 
         Builder builder = new Builder(activity);
@@ -197,17 +179,19 @@ public class SdkPluginDemo extends FQPluginApi {
         builder.setCancelable(false);
         builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-
+                fqSdkSuccess(cb);
                 dialog.dismiss();
             }
         });
         builder.setNeutralButton("失败", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
+                fqSdkError(cb);
                 dialog.dismiss();
             }
         });
         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
+                fqSdkCancel(cb);
                 dialog.dismiss();
             }
         });
@@ -216,6 +200,7 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                 if (keyCode == KeyEvent.KEYCODE_BACK) {
+                    fqSdkCancel(cb);
                     dialog.dismiss();
                     return true;
                 }
@@ -251,7 +236,7 @@ public class SdkPluginDemo extends FQPluginApi {
         if (null == data) {
             data = new Bundle();
         }
-        Log.i(TAG, "setExtraBundle data:" + data.toString());
+        FqLog.i(TAG, "setExtraBundle data:" + data.toString());
 
         roleName = data.getString("roleName");// 角色名称
         roleLevel = data.getString("roleLevel");//当前登录的玩家角色等级
@@ -282,42 +267,42 @@ public class SdkPluginDemo extends FQPluginApi {
         switch (dataType) {
             case 0://创建角色
                 showTips("数据上报:创建角色 ");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 1://角色升级
                 showTips("数据上报:角色升级");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 2:// 上传区服信息
                 showTips("数据上报:上传区服信息");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 3://登录
                 showTips("数据上报:登录");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 4://支付
                 showTips("数据上报:进入游戏");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 5:// 选择服务器
                 showTips("数据上报:支付");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 6://退出游戏
                 showTips("数据上报:退出游戏");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             case 7:// 备注(预留参数)
                 showTips("数据上报:退出游戏");
-                Log.i(TAG, "reportData" + reportData);
+                FqLog.i(TAG, "reportData" + reportData);
                 break;
 
             default:
@@ -325,6 +310,11 @@ public class SdkPluginDemo extends FQPluginApi {
         }
     }
 
+    @Override
+    public int getPayId() {
+        return 0;
+    }
+
     @Override
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
 
@@ -333,40 +323,40 @@ public class SdkPluginDemo extends FQPluginApi {
     /**
      * 复写生命周期方法,里面调用
      */
-    public void onStart(Context context) {
-        Log.i(TAG, "onStart");
+    public void onStart(Activity context) {
+        FqLog.i(TAG, "onStart");
     }
 
-    public void onCreate(Context context, Bundle handler) {
-        Log.i(TAG, "onCreate");
+    public void onCreate(Activity context, Bundle handler) {
+        FqLog.i(TAG, "onCreate");
     }
 
-    public void onRestart(Context context) {
-        Log.i(TAG, "onRestart");
+    public void onRestart(Activity context) {
+        FqLog.i(TAG, "onRestart");
     }
 
-    public void onResume(Context context) {
-        Log.i(TAG, "onResume");
+    public void onResume(Activity context) {
+        FqLog.i(TAG, "onResume");
     }
 
-    public void onPause(Context context) {
-        Log.i(TAG, "onPause");
+    public void onPause(Activity context) {
+        FqLog.i(TAG, "onPause");
     }
 
-    public void onStop(Context context) {
-        Log.i(TAG, "onStop");
+    public void onStop(Activity context) {
+        FqLog.i(TAG, "onStop");
     }
 
-    public void onDestroy(Context context) {
-        Log.i(TAG, "onDestroy");
+    public void onDestroy(Activity context) {
+        FqLog.i(TAG, "onDestroy");
     }
 
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.i(TAG, "onActivityResult requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + data);
+        FqLog.i(TAG, "onActivityResult requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + data);
     }
 
     public void onNewIntent(Intent intent) {
-        Log.i(TAG, "onNewIntent");
+        FqLog.i(TAG, "onNewIntent");
     }
 
     @Override
@@ -379,7 +369,7 @@ public class SdkPluginDemo extends FQPluginApi {
 
     }
 
-    public void onSaveInstanceState(Context context, Bundle outState) {
-        Log.i(TAG, "onSaveInstanceState");
+    public void onSaveInstanceState(Activity context, Bundle outState) {
+        FqLog.i(TAG, "onSaveInstanceState");
     }
 }

+ 1 - 1
fq_channel_oppo/src/main/assets/fq_config/joint_cfg

@@ -1,4 +1,4 @@
 {
 "plugin_name": "oppo",
-"plugin_sdk_class_name":"com.fq.channel.sdk.SdkPluginOppo"
+"plugin_sdk_class_name":"com.fq.channel.sdk.SdkPluginYsdk"
 }

+ 3 - 1
fq_channel_oppo/src/main/java/com/fq/channel/sdk/FQApplication.java

@@ -3,6 +3,8 @@ package com.fq.channel.sdk;
 import android.app.Application;
 import android.util.Log;
 
+import com.fq.channel.sdk.base.utils.FqLog;
+
 public class FQApplication extends Application{
 
 	private String TAG = getClass().getSimpleName() ;
@@ -10,7 +12,7 @@ public class FQApplication extends Application{
 	@Override
 	public void onCreate() {
 		super.onCreate();
-		Log.d(TAG, "FQApplication->onCreate") ;
+		FqLog.d(TAG, "FQApplication->onCreate") ;
 	}
 	
 		

+ 22 - 141
fq_channel_oppo/src/main/java/com/fq/channel/sdk/SdkPluginOppo.java

@@ -1,20 +1,15 @@
 package com.fq.channel.sdk;
 
 import android.app.Activity;
-import android.app.AlertDialog.Builder;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
 import android.util.Log;
 import android.widget.Toast;
 
-import com.fq.channel.sdk.base.constants.ConstSet;
 import com.fq.channel.sdk.base.config.FqConfig;
+import com.fq.channel.sdk.base.constants.ConstSet;
 import com.fq.channel.sdk.base.interfaces.FQPluginApi;
-import com.fq.channel.sdk.base.interfaces.PluginResult;
 import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
 import com.fq.channel.sdk.base.utils.FqLog;
 import com.fq.threelib.gson.Gson;
@@ -33,12 +28,6 @@ public class SdkPluginOppo extends FQPluginApi {
 
     private static final String TAG = "SdkPluginOppo";
 
-    /**
-     * 数据统计
-     */
-    private int dataType;
-    private String roleId, roleName, roleLevel, zoneId, zoneName, serverId, serverName, balance, vipLevel, partyName;
-
     /**
      * 初始化
      */
@@ -48,7 +37,9 @@ public class SdkPluginOppo extends FQPluginApi {
         String secret = (String) FqConfig.get().get("oppo_gameSecret");
         if (null != handler && secret != null) {
             GameCenterSDK.init(secret, activity);
-            initFqSdkSuccess(handler);
+            fqSdkSuccess(handler);
+        } else {
+            fqSdkError(handler);
         }
     }
 
@@ -78,14 +69,14 @@ public class SdkPluginOppo extends FQPluginApi {
 
                     @Override
                     public void onFailure(String content, int resultCode) {
-                        loginFqSdkError(handler, content);
+                        fqSdkError(handler, content);
                     }
                 });
             }
 
             @Override
             public void onFailure(String resultMsg, int resultCode) {
-                loginFqSdkError(handler, resultMsg);
+                fqSdkError(handler, resultMsg);
             }
         });
     }
@@ -103,7 +94,7 @@ public class SdkPluginOppo extends FQPluginApi {
         String notifyUrl = String.valueOf(map.get(ConstSet.PAY_NOTIFY_URl));
         int amount = 0;
         try {
-            amount = (int) (price* 100); // 支付金额,单位分
+            amount = (int) (price * 100); // 支付金额,单位分
         } catch (NumberFormatException e) {
             e.printStackTrace();
         }
@@ -120,7 +111,7 @@ public class SdkPluginOppo extends FQPluginApi {
             public void onSuccess(String resultMsg) {
                 FqLog.i(TAG, "onSuccess");
                 if (handler != null) {
-                    payFqSdkSuccess(handler);
+                    fqSdkSuccess(handler);
                 }
             }
 
@@ -128,9 +119,9 @@ public class SdkPluginOppo extends FQPluginApi {
             public void onFailure(String resultMsg, int resultCode) {
                 FqLog.i(TAG, "onFailure:" + resultMsg);
                 if (PayResponse.CODE_CANCEL == resultCode) {
-                    payFqSdkCancel(handler);
+                    fqSdkCancel(handler);
                 } else {
-                    payFqSdkError(handler);
+                    fqSdkError(handler);
                 }
             }
         });
@@ -150,8 +141,7 @@ public class SdkPluginOppo extends FQPluginApi {
             public void exitGame() {
                 FqLog.i(TAG, "exitGame");
                 if (null != prh) {
-                    prh.onHandlePluginResult(new PluginResult(
-                            PluginResult.Status.OK));
+                    exitFqSdk(prh);
                 }
             }
         });
@@ -162,29 +152,6 @@ public class SdkPluginOppo extends FQPluginApi {
      */
     public void logout(final Context context, final PluginResultHandler cb) {
         Log.d(TAG, "logout");
-
-        Builder builder = new Builder(context);
-        builder.setTitle("注销");
-        builder.setMessage("是否注销?");
-        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
-
-            @Override
-            public void onClick(DialogInterface dialog, int which) {
-                Log.d(TAG, "注销成功");
-                cb.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.OK));
-            }
-        });
-        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
-
-            @Override
-            public void onClick(DialogInterface dialog, int which) {
-                Log.d(TAG, "注销失败");
-                cb.onHandlePluginResult(new PluginResult(
-                        PluginResult.Status.ERROR));
-            }
-        });
-        builder.show();
     }
 
     @Override
@@ -192,21 +159,6 @@ public class SdkPluginOppo extends FQPluginApi {
         FqLog.i(TAG, " changeAccount ");
     }
 
-
-    private void showTips(final String message) {
-        Handler handler = new Handler(Looper.getMainLooper());
-        handler.post(new Runnable() {
-
-            @Override
-            public void run() {
-//				Activity activity = IdsLingdoCache.get().getCurrentActivity();
-//				if (null != activity){
-//					Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
-//				}
-            }
-        });
-    }
-
     /**
      * 游戏角色信息
      *
@@ -214,80 +166,9 @@ public class SdkPluginOppo extends FQPluginApi {
      */
     public void setRoleInfo(Bundle data) {
         if (null == data) {
-            data = new Bundle();
+            FqLog.e(TAG, "setRoleInfo  Bundle is null");
+            return;
         }
-        Log.i(TAG, "setExtraBundle data:" + data.toString());
-
-        roleName = data.getString("roleName");// 角色名称
-        roleLevel = data.getString("roleLevel");//当前登录的玩家角色等级
-        roleId = data.getString("roleId");// 角色名称
-        serverId = data.getString("serverId"); //当前登录的游戏区服ID
-        serverName = data.getString("serverName");//当前登录的游戏区服名称
-        balance = data.getString("balance");//当前用户游戏币余额
-        vipLevel = data.getString("vipLevel");//当前用户VIP等级
-        partyName = data.getString("partyName");//当前用户所属帮派
-        zoneId = data.getString("zoneId");//角色所在区域唯一标示
-        zoneName = data.getString("zoneName");//角色所在区域名称
-        dataType = data.getInt("dataType");//统计判断类型
-
-        StringBuffer reportData = new StringBuffer();
-        reportData.append("[");
-        reportData.append(" roleName:" + roleName);
-        reportData.append(" roleLevel:" + roleLevel);
-        reportData.append(" roleId:" + roleId);
-        reportData.append(" serverId:" + serverId);
-        reportData.append(" serverName:" + serverName);
-        reportData.append(" balance:" + balance);
-        reportData.append(" vipLevel:" + vipLevel);
-        reportData.append(" partyName:" + zoneId);
-        reportData.append(" zoneName:" + zoneName);
-        reportData.append(" dataType:" + dataType);
-        reportData.append("]");
-
-        switch (dataType) {
-            case 0://创建角色
-                showTips("数据上报:创建角色 ");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 1://角色升级
-                showTips("数据上报:角色升级");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 2:// 上传区服信息
-                showTips("数据上报:上传区服信息");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 3://登录
-                showTips("数据上报:登录");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 4://支付
-                showTips("数据上报:进入游戏");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 5:// 选择服务器
-                showTips("数据上报:支付");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 6://退出游戏
-                showTips("数据上报:退出游戏");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 7:// 备注(预留参数)
-                showTips("数据上报:退出游戏");
-                FqLog.i(TAG, "reportData" + reportData);
-                break;
-            default:
-                break;
-        }
-
         String roleId = data.getString("roleId");// 角色id
         String roleName = data.getString("roleName");
         String roleLevel = data.getString("roleLevel");// 角色等级
@@ -355,36 +236,36 @@ public class SdkPluginOppo extends FQPluginApi {
     /**
      * 复写生命周期方法,里面调用
      */
-    public void onStart(Context context) {
+    public void onStart(Activity context) {
         Log.i(TAG, "onStart");
     }
 
-    public void onCreate(Context context, Bundle handler) {
+    public void onCreate(Activity context, Bundle handler) {
         Log.i(TAG, "onCreate");
     }
 
-    public void onRestart(Context context) {
+    public void onRestart(Activity context) {
         Log.i(TAG, "onRestart");
     }
 
-    public void onResume(Context context) {
+    public void onResume(Activity context) {
         Log.i(TAG, "onResume");
     }
 
-    public void onPause(Context context) {
+    public void onPause(Activity context) {
         Log.i(TAG, "onPause");
     }
 
-    public void onStop(Context context) {
+    public void onStop(Activity context) {
         Log.i(TAG, "onStop");
     }
 
-    public void onDestroy(Context context) {
+    public void onDestroy(Activity context) {
         Log.i(TAG, "onDestroy");
     }
 
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.i(TAG, "onActivityResult requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + data);
+        FqLog.i(TAG, "onActivityResult requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + data);
     }
 
     public void onNewIntent(Intent intent) {
@@ -401,7 +282,7 @@ public class SdkPluginOppo extends FQPluginApi {
 
     }
 
-    public void onSaveInstanceState(Context context, Bundle outState) {
+    public void onSaveInstanceState(Activity context, Bundle outState) {
         Log.i(TAG, "onSaveInstanceState");
     }
 }

+ 4 - 8
fq_channel_ysdk/build.gradle

@@ -1,12 +1,12 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 29
+    compileSdkVersion 26
 
 
     defaultConfig {
         minSdkVersion 15
-        targetSdkVersion 29
+        targetSdkVersion 26
         versionCode 1
         versionName "1.0"
 
@@ -24,10 +24,6 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-
-    implementation 'androidx.appcompat:appcompat:1.0.2'
-    testImplementation 'junit:junit:4.12'
-    androidTestImplementation 'androidx.test:runner:1.1.1'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+    api fileTree(dir: 'libs', include: ['*.jar','*.aar'])
+    api project(':fq_plugin_base')
 }

BIN
fq_channel_ysdk/libs/YSDK_Android_1.5.12_c47e6ed.aar


+ 293 - 1
fq_channel_ysdk/src/main/AndroidManifest.xml

@@ -1,2 +1,294 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.fq.channel.sdk" />
+    package="com.fq.channel.sdk">
+    <!-- TODO GAME SDK接入必须权限模块 START -->
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+
+
+    <!-- TODO GAME SDK Midas接入配置 设置屏幕兼容声明 START -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.READ_SMS" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+
+    <supports-screens
+        android:anyDensity="true"
+        android:largeScreens="true"
+        android:normalScreens="true" />
+    <!-- TODO GAME SDK Midas接入配置 设置屏幕兼容声明 END -->
+    <!-- 【必须】 信鸽SDK所需权限   -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <!-- 【常用】 信鸽SDK所需权限 -->
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <!-- 【可选】 信鸽SDK所需权限 -->
+    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
+    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BATTERY_STATS" />
+
+    <!-- TODO GAME SDK设备指纹接入权限 -->
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="com.asus.msa.SupplementaryDID.ACCESS" />
+
+    <application>
+        <uses-library
+            android:name="org.apache.http.legacy"
+            android:required="false" />
+        <!-- TODO GAME SDK接入YSDK登陆接入配置 START -->
+        <activity
+            android:name="com.tencent.ysdk.module.realName.impl.RegisterRealNameActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="landscape"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
+
+        <!-- TODO GAME SDK接入YSDK登陆接入配置 END -->
+        <!-- TODO GAME SDK QQ接入配置 START -->
+        <activity
+            android:name="com.tencent.tauth.AuthActivity"
+            android:launchMode="singleTask"
+            android:noHistory="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="tencent1109962571" />
+                <!-- TODO GAME 这里为游戏QQ登录的配置,游戏需要修改为自己手Q的appid -->
+            </intent-filter>
+        </activity>
+        <activity
+            android:name="com.tencent.connect.common.AssistActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+        <!-- TODO GAME SDK QQ接入配置 END -->
+
+        <!-- TODO GAME SDK 微信接入配置 START -->
+        <activity
+            android:name="com.tencent.tmgp.xzsjjby.wxapi.WXEntryActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:label="WXEntryActivity"
+            android:launchMode="singleTop"
+            android:taskAffinity="com.tencent.tmgp.xzsjjby.diff"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar">
+            <!-- TODO GAME 这里为游戏微信登录的配置,游戏需要修改为自己的包名加.diff -->
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="wx93ae0a8f6a37f9b4" />
+                <!-- TODO GAME 这里为游戏微信登录的配置,游戏需要修改为自己的微信appid -->
+            </intent-filter>
+        </activity>
+        <!-- TODO GAME 1.4.1之后版本支持微信扫码登录,低于此版本升级的YSDK务必增加此处Activity用于二维码展示 -->
+        <activity android:name="com.tencent.ysdk.module.user.impl.wx.qrcode.QRActivity">
+
+        </activity>
+        <!-- TODO GAME SDK 微信接入配置 END -->
+        <!--        &lt;!&ndash; TODO GAME SDK接入免登录接入配置 START &ndash;&gt;-->
+        <!--        <activity-->
+        <!--            android:name="com.tencent.ysdk.module.user.impl.freelogin.FreeLoginInfoActivity"-->
+        <!--            android:configChanges="orientation|screenSize|keyboardHidden"-->
+        <!--            android:exported="true"-->
+        <!--            android:theme="@android:style/Theme.Translucent.NoTitleBar">-->
+        <!--            &lt;!&ndash; TODO GAME 这里为解析外部传入的登录信息,为云设备或者沙盒游戏宿主所调用,这里 &ndash;&gt;-->
+        <!--            <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="tencentysdk" />-->
+        <!--            </intent-filter>-->
+
+        <!--        </activity>-->
+
+        <!--        &lt;!&ndash; TODO GAME SDK接入YSDK登陆接入配置 END &ndash;&gt;-->
+
+
+        <!-- TODO GAME SDK Midas接入配置 START -->
+        <!-- 请务必设置屏幕方向! midas当前不支持屏幕旋转 android:screenOrientation="portrait" android:screenOrientation="landscape" -->
+        <activity
+            android:name="com.tencent.midas.proxyactivity.APMidasPayProxyActivity"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+        <activity
+            android:name="com.tencent.midas.wx.APMidasWXPayActivity"
+            android:exported="true"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+
+        <activity
+            android:name="com.tencent.midas.qq.APMidasQQWalletActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:exported="true"
+            android:launchMode="singleTop"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.BROWSABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+
+                <data android:scheme="qwallet100703379" />
+                <!-- TODO GAME 这里为米大师的默认配置,游戏不要修改 -->
+            </intent-filter>
+        </activity>
+        <activity
+            android:name="com.tencent.midas.jsbridge.APWebJSBridgeActivity"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar"
+            android:windowSoftInputMode="stateAlwaysHidden" />
+        <!-- TODO GAME SDK Midas接入配置 END -->
+        <!--省流量更新SDK的下载服务须注册-->
+        <service
+            android:name="com.tencent.tmdownloader.TMAssistantDownloadService"
+            android:exported="false"
+            android:process=":TMAssistantDownloadSDKService"></service>
+
+        <!-- TODO GAME SDK 推送能力接入配置 START -->
+        <!-- 【必须】 信鸽Activity -->
+        <activity
+            android:name="com.tencent.android.tpush.XGPushActivity"
+            android:exported="false"
+            android:theme="@android:style/Theme.Translucent">
+            <intent-filter>
+                <!-- 若使用AndroidStudio,请设置android:name="android.intent.action" -->
+                <action android:name="android.intent.action" />
+            </intent-filter>
+        </activity>
+        <!-- 【必须】 信鸽receiver广播接收 -->
+        <receiver
+            android:name="com.tencent.android.tpush.XGPushReceiver"
+            android:process=":xg_service_v4">
+            <intent-filter android:priority="0x7fffffff">
+                <!-- 【必须】 信鸽SDK的内部广播 -->
+                <action android:name="com.tencent.android.tpush.action.SDK" />
+                <action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
+                <!-- 【必须】 系统广播:开屏和网络切换 -->
+                <action android:name="android.intent.action.USER_PRESENT" />
+                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+                <!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service -->
+                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
+                <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
+                <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
+            </intent-filter>
+        </receiver>
+
+        <!-- 【必须】YSDK实现的Receiver,用于接收消息透传和操作结果的回调 -->
+
+        <receiver
+            android:name="com.tencent.ysdk.module.push.XGPushModule"
+            android:exported="true">
+            <intent-filter>
+                <!-- 接收消息透传 -->
+                <action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" />
+                <!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
+                <action android:name="com.tencent.android.tpush.action.FEEDBACK" />
+            </intent-filter>
+        </receiver>
+
+        <!-- 【必须】 信鸽service -->
+        <service
+            android:name="com.tencent.android.tpush.service.XGPushServiceV4"
+            android:exported="true"
+            android:persistent="true"
+            android:process=":xg_service_v4" />
+
+        <!-- 【必须】 提高service的存活率 -->
+        <service
+            android:name="com.tencent.android.tpush.rpc.XGRemoteService"
+            android:exported="true">
+            <intent-filter>
+                <!-- 【必须】 请修改为当前APP包名 .PUSH_ACTION, 如demo的包名为:com.qq.xgdemo -->
+                <action android:name="com.tencent.tmgp.xzsjjby.PUSH_ACTION" />
+            </intent-filter>
+        </service>
+        <!-- 【必须】 增强xg_service存活率 -->
+        <service
+            android:name="com.tencent.android.tpush.service.XGDaemonService"
+            android:process=":xg_service_v4" />
+        <!-- 【必须】 【注意】authorities修改为 包名.AUTH_XGPUSH, 如demo的包名为:com.tencent.tmgp.xzsjjby-->
+        <provider
+            android:name="com.tencent.android.tpush.XGPushProvider"
+            android:authorities="com.tencent.tmgp.xzsjjby.AUTH_XGPUSH"
+            android:exported="true" />
+
+        <!-- 【必须】 【注意】authorities修改为 包名.TPUSH_PROVIDER, 如demo的包名为:com.tencent.tmgp.xzsjjby-->
+        <provider
+            android:name="com.tencent.android.tpush.SettingsContentProvider"
+            android:authorities="com.tencent.tmgp.xzsjjby.TPUSH_PROVIDER"
+            android:exported="false" />
+
+        <!-- 【必须】 【注意】authorities修改为 包名.TENCENT.MID.V3, 如demo的包名为:com.tencent.tmgp.xzsjjby-->
+        <provider
+            android:name="com.tencent.mid.api.MidProvider"
+            android:authorities="com.tencent.tmgp.xzsjjby.TENCENT.MID.V3"
+            android:exported="true"></provider>
+
+
+        <!-- 【必须】 请将YOUR_ACCESS_ID修改为游戏的AccessId,如果没有自己注册信鸽可以在OPEN官网后台查询,“21"开头的10位数字,中间没空格 -->
+        <meta-data
+            android:name="XG_V2_ACCESS_ID"
+            android:value="2100348407" />
+        <!-- 【必须】 同上,请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A"开头的12位字符串,中间没空格 -->
+        <meta-data
+            android:name="XG_V2_ACCESS_KEY"
+            android:value="A25TUI91V6LU" />
+        <!-- 【必须】 CHANNEL_ID无需修改保持不变-->
+        <meta-data
+            android:name="XG_V4_CHANNEL_ID"
+            android:value="1234567" />
+        <!-- TODO GAME SDK 推送能力接入配置 End -->
+
+        <!-- TODO 鉴权SDK 接入配置 START -->
+        <activity
+            android:name="com.tencent.qqdownloader.pay.QQDownloaderEntryActivity"
+            android:exported="true"></activity>
+
+        <meta-data
+            android:name="YSDK_AUTH_KEY"
+            android:value="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsKX4kg6T32qn8uHc6j9AwMeQzpUW3hh6o8WiBJi9wlx0pWWRLoqdQuhoUPGpfrdVyt/iEnlvF4fmCkk82bJxXv4x2QRqR4tq3Li5YODzk/xLlQsa3F9nPb+iadqdQJfm6n53ts3uxkApl3gMURuw8SfoFuzuB3mpYHFO+DXQ7BSU2N/+Sdjb6xuOPWHrk9kXSo+h2VTkCwYcpEVC505T0MoA4PtX3GwsO7+lSJrRwuwzXi0eBi5evV57g9WhNnsZLfHTYqC43EGfbj0+/rNXQgz2AfJ78y5jW0am2WMBaO4Sao/acYHu/e+PSqr+fvolmbB1cFLCkCFnF6jBMuk8AQIDAQAB" />
+        <meta-data
+            android:name="YSDK_AUTH_KEY_VERSION"
+            android:value="0" />
+
+<!--        <provider-->
+<!--            android:name="com.tencent.ysdk.framework.web.YYBInstallFileProvider"-->
+<!--            android:authorities="com.tencent.tmgp.xzsjjby.installfileprovider"-->
+<!--            android:exported="false"-->
+<!--            android:grantUriPermissions="true">-->
+<!--            <meta-data-->
+<!--                android:name="android.support.FILE_PROVIDER_PATHS"-->
+<!--                android:resource="@xml/com_tencent_ysdk_fileprovider_path" />-->
+<!--        </provider>-->
+
+    </application>
+</manifest>

BIN
fq_channel_ysdk/src/main/assets/MidasPay.zip


+ 4 - 0
fq_channel_ysdk/src/main/assets/fq_config/joint_cfg

@@ -0,0 +1,4 @@
+{
+"plugin_name": "ysdk",
+"plugin_sdk_class_name":"com.fq.channel.sdk.SdkPluginYsdk"
+}

+ 24 - 0
fq_channel_ysdk/src/main/assets/ysdkconf.ini

@@ -0,0 +1,24 @@
+;**************游戏相关配置, 游戏需要根据各自情况修改 START **********
+;游戏的QQAPPID
+QQ_APP_ID=1109962571
+
+;游戏的微信APPID
+WX_APP_ID=wx93ae0a8f6a37f9b4
+
+;游戏的OFFER_ID
+OFFER_ID=1109962571
+;***************游戏配置项, 游戏需要根据各自情况修改 END **************
+
+;************* YSDK相关配置项,游戏需要根据各自情况修改 START **********
+;联调环境
+:YSDK_URL=https://ysdktest.qq.com
+;正式环境
+YSDK_URL=https://ysdk.qq.com
+;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************
+;YSDK游戏内Icon开关
+YSDK_ICON_SWITCH=true
+YSDK_IMMERSIVE_ICON_SWITCH=true
+YSDK_MSG_BOX_SWITCH=true
+YSDK_ICON_CAPTURE_SWITCH=true
+;YSDK游戏内Icon位置单位dp
+YSDK_ICON_LOCATION=100

+ 19 - 0
fq_channel_ysdk/src/main/java/com/fq/channel/sdk/FQApplication.java

@@ -0,0 +1,19 @@
+package com.fq.channel.sdk;
+
+import android.app.Application;
+import android.util.Log;
+
+import com.fq.channel.sdk.base.utils.FqLog;
+
+public class FQApplication extends Application{
+
+	private String TAG = getClass().getSimpleName() ;
+	
+	@Override
+	public void onCreate() {
+		super.onCreate();
+		FqLog.d(TAG, "FQApplication->onCreate") ;
+	}
+	
+		
+}

+ 635 - 0
fq_channel_ysdk/src/main/java/com/fq/channel/sdk/SdkPluginYsdk.java

@@ -0,0 +1,635 @@
+package com.fq.channel.sdk;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.Toast;
+
+import com.fq.channel.sdk.base.config.FqConfig;
+import com.fq.channel.sdk.base.constants.ConstSet;
+import com.fq.channel.sdk.base.interfaces.FQPluginApi;
+import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
+import com.fq.channel.sdk.base.utils.FqLog;
+import com.fq.channel.sdk.base.utils.Utils;
+import com.tencent.ysdk.api.YSDKApi;
+import com.tencent.ysdk.framework.common.BaseRet;
+import com.tencent.ysdk.framework.common.eFlag;
+import com.tencent.ysdk.framework.common.ePlatform;
+import com.tencent.ysdk.module.bugly.BuglyListener;
+import com.tencent.ysdk.module.pay.PayListener;
+import com.tencent.ysdk.module.pay.PayRet;
+import com.tencent.ysdk.module.share.ShareApi;
+import com.tencent.ysdk.module.share.ShareCallBack;
+import com.tencent.ysdk.module.share.impl.IScreenImageCapturer;
+import com.tencent.ysdk.module.share.impl.ShareRet;
+import com.tencent.ysdk.module.user.PersonInfo;
+import com.tencent.ysdk.module.user.UserListener;
+import com.tencent.ysdk.module.user.UserLoginRet;
+import com.tencent.ysdk.module.user.UserRelationRet;
+import com.tencent.ysdk.module.user.WakeupRet;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Map;
+
+public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyListener {
+
+    private static final String TAG = "SdkPluginYsdk";
+
+    private PluginResultHandler loginHandler, payHandler, logoutHander;
+    /**
+     * 数据统计
+     */
+    private int dataType;
+    private String roleId, roleName, roleLevel, zoneId, zoneName, serverId, serverName, balance, vipLevel, partyName;
+
+    /**
+     * 初始化
+     */
+    @Override
+    public void init(Context activity, final PluginResultHandler handler) {
+        FqLog.i(TAG, "init");
+        String qqAppId = (String) FqConfig.get().get("qqAppId");
+        String wxAppId = (String) FqConfig.get().get("wxAppId");
+        FqLog.i(TAG, "qqAppId/wxAppId:" + qqAppId + "/" + wxAppId);
+        if (TextUtils.isEmpty(qqAppId) || TextUtils.isEmpty(wxAppId)) {
+            FqLog.e(TAG, "QQ_APP_ID 或者 WX_APP_ID 为空!");
+            fqSdkError(handler);
+        }
+        fqSdkSuccess(handler);
+
+    }
+
+    /**
+     * 登录
+     */
+    @Override
+    public void login(final Context activity, final PluginResultHandler handler) {
+        FqLog.i(TAG, "login ");
+        loginHandler = handler;
+        final Dialog mDialog = new Dialog(activity, Utils.getIdentifier("LoginDialog", "style"));
+        mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        final View view = LayoutInflater.from((Activity) activity).inflate(Utils.getIdentifier("fq_ysdk_login", "layout"), null);
+        Button wx = view.findViewById(Utils.getIdentifier("ysdk_wx", "id"));
+        Button qq = view.findViewById(Utils.getIdentifier("ysdk_qq", "id"));
+        mDialog.setContentView(view);
+        mDialog.show();
+        mDialog.getWindow().setGravity(Gravity.BOTTOM);
+        mDialog.setCancelable(false);
+
+        wx.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                FqLog.i(TAG, "weChat login--");
+                YSDKApi.login(ePlatform.WX);
+                mDialog.dismiss();
+            }
+        });
+
+        qq.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                FqLog.i(TAG, "qq login--");
+                YSDKApi.login(ePlatform.QQ);
+                mDialog.dismiss();
+            }
+        });
+
+    }
+
+    @Override
+    public void pay(final Context context, final Map<String, Object> map,
+                    final PluginResultHandler handler) {
+        FqLog.i(TAG, "pay map:" + (map != null ? map.toString() : ""));
+        payHandler = handler;
+        String orderId = String.valueOf(map.get(ConstSet.PAY_ORDER_ID));
+        String extral = String.valueOf(map.get(ConstSet.PAY_EXTRAL_INFO));
+        float price = Float.valueOf((String) map.get(ConstSet.PAY_PRICE));
+        String productName = String.valueOf(map.get(ConstSet.PAY_PRODUCT_NAME));
+        String goodsResData = String.valueOf(map.get(ConstSet.PAY_CHARGE_ID));
+        String notifyUrl = String.valueOf(map.get(ConstSet.PAY_NOTIFY_URl));
+        int amount = 0;
+        try {
+            amount = (int) (price * 100); // 支付金额,单位分
+        } catch (NumberFormatException e) {
+            e.printStackTrace();
+        }
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] appResData = baos.toByteArray();
+
+        YSDKApi.recharge("1", String.valueOf(price), false, appResData,  "ysdkExt", new PayListener() {
+            @Override
+            public void OnPayNotify(PayRet ret) {
+                FqLog.i(TAG, ret.toString());
+                if (PayRet.RET_SUCC == ret.ret) {
+                    // 支付流程成功
+                    switch (ret.payState) {
+                        // 支付成功
+                        case PayRet.PAYSTATE_PAYSUCC:
+                            fqSdkSuccess(payHandler);
+                            break;
+                        // 取消支付
+                        case PayRet.PAYSTATE_PAYCANCEL:
+                            fqSdkCancel(payHandler);
+                            break;
+                        // 支付结果未知
+                        case PayRet.PAYSTATE_PAYUNKOWN:
+                            FqLog.i(TAG, ret.toString());
+                            fqSdkError(payHandler);
+                            break;
+                        // 支付失败
+                        case PayRet.PAYSTATE_PAYERROR:
+                            fqSdkError(payHandler);
+                            break;
+                    }
+                } else {
+                    switch (ret.flag) {
+                        case eFlag.Login_TokenInvalid:
+                            // 用户取消支付
+                            Log.d(TAG, ret.toString());
+                            fqSdkError(payHandler);
+                            // 并且注销
+                            YSDKApi.logout();
+                            if (null != logoutHander) {
+                                fqSdkSuccess(logoutHander);
+                            }
+                            break;
+                        case eFlag.Pay_User_Cancle:
+                            fqSdkCancel(payHandler);
+                            break;
+                        case eFlag.Pay_Param_Error:
+                            fqSdkError(payHandler);
+                            break;
+                        case eFlag.Error:
+                        default:
+                            Log.d(TAG, ret.toString());
+                            fqSdkError(payHandler);
+                            break;
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * 退出
+     *
+     * @param context
+     * @param prh
+     */
+    public void exit(Context context, final PluginResultHandler prh) {
+        FqLog.i(TAG, "exit");
+        exitFqSdkNoConfirmDialog(prh);
+    }
+
+    /**
+     * 注销
+     */
+    public void logout(final Context context, final PluginResultHandler cb) {
+        Log.d(TAG, "logout");
+        logoutHander = cb;
+        YSDKApi.logout();
+        fqSdkSuccess(cb);
+    }
+
+    @Override
+    public void changeAccount(Activity activity, final PluginResultHandler prh) {
+        FqLog.i(TAG, " changeAccount ");
+    }
+
+
+    private void showTips(final String message) {
+        Handler handler = new Handler(Looper.getMainLooper());
+        handler.post(new Runnable() {
+
+            @Override
+            public void run() {
+//				Activity activity = IdsLingdoCache.get().getCurrentActivity();
+//				if (null != activity){
+//					Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
+//				}
+            }
+        });
+    }
+
+    /**
+     * 游戏角色信息
+     *
+     * @param data
+     */
+    public void setRoleInfo(Bundle data) {
+        if (null == data) {
+            data = new Bundle();
+        }
+        Log.i(TAG, "setExtraBundle data:" + data.toString());
+
+        roleName = data.getString("roleName");// 角色名称
+        roleLevel = data.getString("roleLevel");//当前登录的玩家角色等级
+        roleId = data.getString("roleId");// 角色名称
+        serverId = data.getString("serverId"); //当前登录的游戏区服ID
+        serverName = data.getString("serverName");//当前登录的游戏区服名称
+        balance = data.getString("balance");//当前用户游戏币余额
+        vipLevel = data.getString("vipLevel");//当前用户VIP等级
+        partyName = data.getString("partyName");//当前用户所属帮派
+        zoneId = data.getString("zoneId");//角色所在区域唯一标示
+        zoneName = data.getString("zoneName");//角色所在区域名称
+        dataType = data.getInt("dataType");//统计判断类型
+
+        StringBuffer reportData = new StringBuffer();
+        reportData.append("[");
+        reportData.append(" roleName:" + roleName);
+        reportData.append(" roleLevel:" + roleLevel);
+        reportData.append(" roleId:" + roleId);
+        reportData.append(" serverId:" + serverId);
+        reportData.append(" serverName:" + serverName);
+        reportData.append(" balance:" + balance);
+        reportData.append(" vipLevel:" + vipLevel);
+        reportData.append(" partyName:" + zoneId);
+        reportData.append(" zoneName:" + zoneName);
+        reportData.append(" dataType:" + dataType);
+        reportData.append("]");
+
+        switch (dataType) {
+            case 0://创建角色
+                showTips("数据上报:创建角色 ");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 1://角色升级
+                showTips("数据上报:角色升级");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 2:// 上传区服信息
+                showTips("数据上报:上传区服信息");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 3://登录
+                showTips("数据上报:登录");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 4://支付
+                showTips("数据上报:进入游戏");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 5:// 选择服务器
+                showTips("数据上报:支付");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 6://退出游戏
+                showTips("数据上报:退出游戏");
+                Log.i(TAG, "reportData" + reportData);
+                break;
+
+            case 7:// 备注(预留参数)
+                showTips("数据上报:退出游戏");
+                FqLog.i(TAG, "reportData" + reportData);
+                break;
+            default:
+                break;
+        }
+
+        String roleId = data.getString("roleId");// 角色id
+        String roleName = data.getString("roleName");
+        String roleLevel = data.getString("roleLevel");// 角色等级
+        String zoneId = data.getString("zoneId");
+        String zoneName = data.getString("zoneName");
+        String serverId = data.getString("serverId");
+        String serverName = data.getString("serverName");
+        int dataType = data.getInt("dataType");
+        switch (dataType) {
+            //这个在登入的时候调用
+            case 3:
+                FqLog.i(TAG, "setExtraBundle: roleId:" + roleId + ",roleName:" + roleName + ",roleLevel:" + roleLevel + ",serverId:" + serverId + ",serverName:" + serverName + ",chapter:Idreamsky");
+                break;
+
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+
+    }
+
+    @Override
+    public int getPayId() {
+        return 4;
+    }
+
+    /**
+     * 释放资源时调用,当用户退出界面或者游戏的时候,
+     * 调用此接口,释放资源才允许退出!
+     *
+     * @param context
+     */
+    public void releaseSdkResource(Context context) {
+        FqLog.i(TAG, "releaseSdkResource");
+
+        Toast.makeText(context, "释放SDK资源", Toast.LENGTH_SHORT).show();
+
+        try {
+            /**渠道存在退出界面,此处游戏必须调用,begin*/
+            Intent startMain = new Intent(Intent.ACTION_MAIN);
+            startMain.addCategory(Intent.CATEGORY_HOME);
+            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            context.startActivity(startMain);
+            /**渠道存在退出界面,此处游戏必须调用,end*/
+        } catch (Exception e) {
+            FqLog.e(TAG, "releaseSdkResource 抛出异常!");
+        }
+    }
+
+    /**
+     * 复写生命周期方法,里面调用
+     */
+    public void onStart(Activity context) {
+        FqLog.i(TAG, "onStart");
+    }
+
+    public void onCreate(final Activity activity, Bundle handler) {
+        FqLog.i(TAG, "onCreate");
+        YSDKApi.onCreate(activity);
+        // 设置java层或c++层回调,如果两层都设置了则会只回调到java层
+        // 全局回调类,游戏自行实现
+        YSDKApi.setUserListener(this);
+        YSDKApi.setBuglyListener(this);
+        YSDKApi.handleIntent(activity.getIntent());
+
+        //游戏助手内截屏分享功能
+        YSDKApi.setScreenCapturer(new IScreenImageCapturer() {
+            @Override
+            public Bitmap caputureImage() {
+                // TODO GAME 游戏需要集成此方法并根据各自游戏引擎实现截图方法
+                // ----以下部分代码仅作为一种示例不作为实际实现方式----
+                View view = activity.getWindow().getDecorView();
+                view.setDrawingCacheEnabled(true);
+                view.buildDrawingCache();
+                Rect rect = new Rect();
+                view.getWindowVisibleDisplayFrame(rect);
+                int statusBarHeight = rect.top;
+                WindowManager windowManager = activity.getWindowManager();
+                DisplayMetrics outMetrics = new DisplayMetrics();
+                windowManager.getDefaultDisplay().getMetrics(outMetrics);
+                int width = outMetrics.widthPixels;
+                int height = outMetrics.heightPixels;
+                Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width,
+                        height - statusBarHeight);
+                view.destroyDrawingCache();
+                view.setDrawingCacheEnabled(false);
+                // ----以上部分代码仅作为示例不作为实际实现----
+                return bitmap;
+            }
+        });
+        //注册分享监听器接受分享状态信息
+        ShareApi.getInstance().regShareCallBack(new ShareCallBack() {
+            @Override
+            public void onSuccess(ShareRet ret) {
+                FqLog.i("Share", "分享成功!  分享路径:" + ret.shareType.name() + " 透传信息:" + ret.extInfo);
+            }
+
+            @Override
+            public void onError(ShareRet ret) {
+                FqLog.i("Share", "分享失败  分享路径:" + ret.shareType.name() + " 错误码:" + ret.retCode + " 错误信息:" + ret.retMsg + " 透传信息:" + ret.extInfo);
+            }
+
+            @Override
+            public void onCancel(ShareRet ret) {
+                FqLog.i("Share", "分享用户取消!  分享路径:" + ret.shareType.name() + " 透传信息:" + ret.extInfo);
+            }
+        });
+    }
+
+    public void onRestart(Activity context) {
+        Log.i(TAG, "onRestart");
+        YSDKApi.onRestart((Activity) context);
+    }
+
+    public void onResume(Activity context) {
+        Log.i(TAG, "onResume");
+        YSDKApi.onResume((Activity) context);
+    }
+
+    public void onPause(Activity context) {
+        Log.i(TAG, "onPause");
+        YSDKApi.onPause((Activity) context);
+    }
+
+    public void onStop(Activity context) {
+        Log.i(TAG, "onStop");
+        YSDKApi.onStop((Activity) context);
+    }
+
+    public void onDestroy(Activity context) {
+        Log.i(TAG, "onDestroy");
+        YSDKApi.onDestroy((Activity) context);
+    }
+
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        FqLog.i(TAG, "onActivityResult requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + data);
+        YSDKApi.onActivityResult(requestCode, resultCode, data);
+    }
+
+    public void onNewIntent(Intent intent) {
+        FqLog.i(TAG, "onNewIntent");
+        YSDKApi.handleIntent(intent);
+    }
+
+    @Override
+    public void attachBaseContext(Context context) {
+
+    }
+
+    @Override
+    public void onApplicationCreate(Context context) {
+
+    }
+
+    public void onSaveInstanceState(Activity context, Bundle outState) {
+    }
+
+    @Override
+    public String OnCrashExtMessageNotify() {
+        return null;
+    }
+
+    @Override
+    public byte[] OnCrashExtDataNotify() {
+        return new byte[0];
+    }
+
+    /**
+     * 登录回调
+     */
+    /* YSDK会在三种情况下(每次游戏启动、后台运行一分钟以上切换回前台、在前台持续运行30分钟以上)触发自动验证票据有效性的逻辑,
+     * 并将验证结果通过loginNotify回调给游戏(回调内容与游戏主动调用login接口一致)。
+     * 如果SDK已经为登录状态则在YSDK回调 loginNotify 时无需重新登录。
+     */
+    @Override
+    public void OnLoginNotify(UserLoginRet ret) {
+        FqLog.i(TAG, "OnLoginNotify called ret:" + ret.getAccessToken() + " the ret:" + ret.toString());
+        switch (ret.flag) {
+            case eFlag.Succ:
+                YSDKApi.getLoginRecord(ret);
+
+                if (ret.ret != BaseRet.RET_SUCC) {
+                    Log.d(TAG, "UserLogin error!!!");
+                    fqSdkError(loginHandler, "UserLogin error!!!");
+                    YSDKApi.logout();
+                    return;
+                }
+                ePlatform mPlatform = ePlatform.QQ;
+
+                if (ret.platform == ePlatform.PLATFORM_ID_QQ) {
+                    mPlatform = ePlatform.QQ;
+                    YSDKApi.queryUserInfo(mPlatform);
+                } else if (ret.platform == ePlatform.PLATFORM_ID_WX) {
+                    mPlatform = ePlatform.WX;
+                    YSDKApi.queryUserInfo(mPlatform);
+                }
+
+                break;
+            // 游戏逻辑,对登录失败情况分别进行处理
+//            case eFlag.QQ_UserCancel:
+//                showToastTips("用户取消授权,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "用户取消授权,请重试");
+//                break;
+//            case eFlag.QQ_LoginFail:
+//                showToastTips("QQ登录失败,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "QQ登录失败,请重试");
+//                break;
+//            case eFlag.QQ_NetworkErr:
+//                showToastTips("QQ登录异常,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "QQ登录异常,请重试");
+//                break;
+//            case eFlag.QQ_NotInstall:
+//                showToastTips("手机未安装手Q,请安装后重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "手机未安装手Q,请安装后重试");
+//                break;
+//            case eFlag.QQ_NotSupportApi:
+//                showToastTips("手机手Q版本太低,请升级后重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "手机手Q版本太低,请升级后重试");
+//                break;
+//            case eFlag.WX_NotInstall:
+//                showToastTips("手机未安装微信,请安装后重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "手机未安装微信,请安装后重试");
+//                break;
+//            case eFlag.WX_NotSupportApi:
+//                showToastTips("手机微信版本太低,请升级后重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "手机微信版本太低,请升级后重试");
+//                break;
+//            case eFlag.WX_UserCancel:
+//                showToastTips("用户取消授权,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "用户取消授权,请重试");
+//                break;
+//            case eFlag.WX_UserDeny:
+//                showToastTips("用户拒绝了授权,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "用户拒绝了授权,请重试");
+//                break;
+//            case eFlag.WX_LoginFail:
+//                showToastTips("微信登录失败,请重试");
+//                isLogin = false;
+//                loginLedouSdkError(loginHandler, "微信登录失败,请重试");
+//                break;
+//            case eFlag.Login_TokenInvalid:
+//                loginLedouSdkError(loginHandler, "您尚未登录或者之前的登录已过期,请重试");
+//                break;
+//            case eFlag.Login_NotRegisterRealName:
+//                // 显示登录界面
+//                showToastTips("您的账号没有进行实名认证,请实名认证后重试");
+//                loginLedouSdkError(loginHandler, "您的账号没有进行实名认证,请实名认证后重试");
+//                break;
+
+        }
+    }
+
+    @Override
+    public void OnWakeupNotify(WakeupRet ret) {
+        FqLog.i(TAG, "called");
+        FqLog.i(TAG, ret.toString() + ":flag:" + ret.flag);
+        FqLog.i(TAG, ret.toString() + "msg:" + ret.msg);
+        FqLog.i(TAG, ret.toString() + "platform:" + ret.platform);
+        // MainActivity.platform = ret.platform;
+        // TODO GAME 游戏需要在这里增加处理异账号的逻辑
+        if (eFlag.Wakeup_YSDKLogining == ret.flag) {
+            // 用拉起的账号登录,登录结果在OnLoginNotify()中回调
+        } else if (ret.flag == eFlag.Wakeup_NeedUserSelectAccount) {
+            // 异账号时,游戏需要弹出提示框让用户选择需要登录的账号
+            FqLog.i(TAG, "diff account");
+            YSDKApi.logout();
+        } else if (ret.flag == eFlag.Wakeup_NeedUserLogin) {
+            // 没有有效的票据,登出游戏让用户重新登录
+            FqLog.i(TAG, "need login");
+            YSDKApi.logout();
+        } else {
+            FqLog.i(TAG, "logout");
+            YSDKApi.logout();
+        }
+    }
+
+    @Override
+    public void OnRelationNotify(UserRelationRet relationRet) {
+        String result = "";
+        result = result + "flag:" + relationRet.flag + "\n";
+        result = result + "msg:" + relationRet.msg + "\n";
+        result = result + "platform:" + relationRet.platform + "\n";
+        Log.d(TAG, "OnRelationNotify:" + result);
+        PersonInfo personInfo = null;
+        JSONObject userProperty = new JSONObject();
+        if (relationRet.persons != null && relationRet.persons.size() > 0) {
+            personInfo = (PersonInfo) relationRet.persons.firstElement();
+            try {
+                userProperty.put("nick_name", personInfo.nickName);
+                userProperty.put("open_id", personInfo.openId);
+                userProperty.put("userId", personInfo.userId);
+                userProperty.put("gender", personInfo.gender);
+                userProperty.put("picture_small", personInfo.pictureSmall);
+                userProperty.put("picture_middle", personInfo.pictureMiddle);
+                userProperty.put("picture_large", personInfo.pictureLarge);
+                userProperty.put("provice", personInfo.province);
+                userProperty.put("city", personInfo.city);
+                userProperty.put("country", personInfo.country);
+
+            } catch (JSONException e) {
+                FqLog.e(TAG, "JSONException:" + e);
+                e.printStackTrace();
+            }
+        } else {
+            result = result + "relationRet.persons is bad";
+        }
+        FqLog.e(TAG,"OnRelationNotify" + result);
+        // 发送结果到结果展示界面
+
+    }
+}

+ 67 - 0
fq_channel_ysdk/src/main/java/com/fq/channel/sdk/WXCallBackActivity.java

@@ -0,0 +1,67 @@
+package com.fq.channel.sdk;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import com.fq.channel.sdk.base.utils.FqLog;
+import com.tencent.mm.opensdk.modelbase.BaseResp;
+import com.tencent.mm.opensdk.modelmsg.SendAuth;
+import com.tencent.mm.opensdk.openapi.IWXAPI;
+import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
+import com.tencent.mm.opensdk.utils.Log;
+import com.tencent.ysdk.module.user.impl.wx.YSDKWXEntryActivity;
+
+public class WXCallBackActivity  extends YSDKWXEntryActivity implements IWXAPIEventHandler {
+
+    private static final String TAG = "WXEntryActivity";
+    private IWXAPI api;
+    private String a,b,c;
+
+    private Class lauanchClass ;
+
+
+    public void onResp(BaseResp var1) {
+//        super.onResp(var1);
+
+        Bundle var2 = this.getIntent().getExtras();
+        this.a = var2.getString("platformId");
+        this.b = var2.getString("_wxobject_message_ext");
+        this.c = var2.getString("_wxapi_add_card_to_wx_card_list");
+
+        FqLog.d(TAG, "onResp");
+        Log.d("YSDK_USER_WX", "onResp");
+
+        Intent var6 = new Intent();
+
+//        var6.setFlags(268435456);
+//        var6.addFlags(536870912);
+        var6.putExtra("wx_callback", "onResp");
+        var6.putExtra("wx_errCode", var1.errCode);
+        var6.putExtra("wx_errStr", var1.errStr);
+        var6.putExtra("wx_transaction", var1.transaction);
+        var6.putExtra("wx_openId", var1.openId);
+        var6.putExtra("platformId", this.a);
+        FqLog.i("YSDK_USER_WX", "transaction: " + var1.transaction);
+        if(var1 instanceof SendAuth.Resp) {
+            SendAuth.Resp var7 = (SendAuth.Resp)var1;
+            FqLog.i("YSDK_USER_WX", "code: " + var7.code);
+            var6.putExtra("wx_code", var7.code);
+            var6.putExtra("country", var7.country);
+            var6.putExtra("lang", var7.lang);
+        }
+
+        if(var1 instanceof com.tencent.mm.opensdk.modelmsg.SendMessageToWX.Resp && !TextUtils.isEmpty(var1.transaction) && var1.transaction.startsWith("WXShare")) {
+            FqLog.i("YSDK_USER_WX", "code: " + var1.errCode);
+            var6.putExtra("wx_share_err_code", var1.errCode);
+        }
+
+        if("wechatAddCardToWXCardPackage".equals(var1.transaction)) {
+            var6.putExtra("_wxapi_add_card_to_wx_card_list", this.c);
+        }
+
+            new SdkPluginYsdk().onNewIntent(var6);
+            this.finish();
+    }
+
+}

BIN
fq_channel_ysdk/src/main/res/drawable/fq_iv_hide_left.png


BIN
fq_channel_ysdk/src/main/res/drawable/fq_iv_hide_right.png


+ 34 - 0
fq_channel_ysdk/src/main/res/layout/fq_ysdk_login.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    >
+
+    <LinearLayout
+        android:layout_marginTop="10dp"
+        android:layout_width="wrap_content"
+        android:layout_height="90dp"
+        android:layout_alignParentBottom="true"
+        android:layout_centerInParent="true"
+        android:layout_marginBottom="100dp"
+        android:orientation="horizontal">
+
+        <Button
+            android:id="@+id/ysdk_qq"
+            android:layout_width="120dp"
+            android:layout_height="30dp"
+            android:layout_gravity="center"
+            android:background="@drawable/fq_iv_hide_left" />
+
+        <Button
+            android:id="@+id/ysdk_wx"
+            android:layout_width="120dp"
+            android:layout_height="30dp"
+            android:layout_marginLeft="30dp"
+            android:layout_gravity="center"
+            android:background="@drawable/fq_iv_hide_right" />
+    </LinearLayout>
+
+</LinearLayout>

+ 29 - 0
fq_channel_ysdk/src/main/res/values/fq_ysdk_styles.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!--自定义dialog背景全透明无边框theme -->
+    <style name="LoginDialog" parent="android:style/Theme.Dialog">
+        <!--背景颜色及和透明程度-->
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <!--是否去除标题 -->
+        <item name="android:windowNoTitle">true</item>
+        <!--是否去除边框-->
+        <item name="android:windowFrame">@null</item>
+        <!--是否浮现在activity之上-->
+        <item name="android:windowIsFloating">true</item>
+        <!--是否模糊-->
+        <item name="android:backgroundDimEnabled">false</item>
+    </style>
+
+    <!--自定义dialog背景全透明无边框,弹出有遮罩theme -->
+    <style name="LoginMongoDialog" parent="android:style/Theme.Dialog">
+         <item name="android:windowFrame">@null</item>
+         <item name="android:windowIsFloating">true</item>
+         <item name="android:windowIsTranslucent">true</item>
+         <item name="android:windowNoTitle">true</item>
+         <item name="android:background">@android:color/transparent</item>
+         <item name="android:windowBackground">@android:color/transparent</item>
+         <item name="android:backgroundDimEnabled">true</item>
+         <item name="android:backgroundDimAmount">0.6</item>
+    </style>
+
+</resources>

+ 0 - 3
fq_channel_ysdk/src/main/res/values/strings.xml

@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">fq_channel_ysdk</string>
-</resources>

+ 1 - 1
fq_plugin_api/build.gradle

@@ -28,5 +28,5 @@ dependencies {
 
     api project(':fq_plugin_core')
     api project(':fq_plugin_base')
-    api project(':fq_channel_oppo')
+    api project(':fq_channel_ysdk')
 }

+ 7 - 2
fq_plugin_api/src/main/assets/fqcfg

@@ -3,6 +3,11 @@
 "channelId": "1110",
 "adId": "844922",
 "adFlag": "sglsbw_oppo_0001",
-"oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e",
-"isDebug":true
+"isDebug":true,
+
+"qqAppId": "1108134389",
+"wxAppId": "wxbfdd8ed9995ce4a6",
+
+"oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e"
+
 }

+ 21 - 22
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGame.java

@@ -28,7 +28,7 @@ public class FqGame {
      */
     public static void init(@NonNull Activity activity, final IResult<String> resultInit) {
         FqLog.i(TAG, "init");
-        FqGameHander.init(activity,resultInit);
+        FqGameHander.init(activity, resultInit);
     }
 
     /**
@@ -38,7 +38,7 @@ public class FqGame {
      */
     public static void login(@NonNull Activity activity, final IResult<LoginInfo> resultLoginInfo) {
         FqLog.i(TAG, "login");
-        FqGameHander.login(activity,resultLoginInfo);
+        FqGameHander.login(activity, resultLoginInfo);
     }
 
     /**
@@ -59,8 +59,8 @@ public class FqGame {
      * @param activity
      * @param result
      */
-    public static void exit(Activity activity,IExit result){
-        FqGameHander.exit(activity,result);
+    public static void exit(Activity activity, IExit result) {
+        FqGameHander.exit(activity, result);
     }
 
     /**
@@ -68,54 +68,53 @@ public class FqGame {
      *
      * @param mBundle
      */
-    public static void setRoleInfo(Bundle mBundle){
+    public static void setRoleInfo(Bundle mBundle) {
         JointManager.getInstance().setRoleInfo(mBundle);
     }
 
     /**
      * onRequestPermissionsResult
-     *
      */
     public static void onRequestPermissionsResult(int requestCode,
-                                                  String[] permissions, int[] grantResults){
-        FqGameHander.onRequestPermissionsResult(requestCode,permissions,grantResults);
+                                                  String[] permissions, int[] grantResults) {
+        FqGameHander.onRequestPermissionsResult(requestCode, permissions, grantResults);
         ApiPlugin.getInstace().onRequestPermissionsResult(requestCode, permissions, grantResults);
     }
 
-    public  static void onCreate(Bundle savedInstanceState) {
+    public static void onCreate(Activity activity, Bundle savedInstanceState) {
         FqLog.i(TAG, "onCreate: ");
-        ApiPlugin.getInstace().onCreate(savedInstanceState);
+        ApiPlugin.getInstace().onCreate(activity,savedInstanceState);
     }
 
-    public static void onRestart() {
+    public static void onRestart(Activity activity) {
         FqLog.i(TAG, "onRestart: ");
-        ApiPlugin.getInstace().onRestart();
+        ApiPlugin.getInstace().onRestart(activity);
     }
 
-    public static void onStart() {
+    public static void onStart(Activity activity) {
         FqLog.i(TAG, "onStart: ");
-        ApiPlugin.getInstace().onStart();
+        ApiPlugin.getInstace().onStart(activity);
     }
 
-    public static void onResume() {
+    public static void onResume(Activity activity) {
         FqLog.i(TAG, "onResume: ");
-        ApiPlugin.getInstace().onResume();
+        ApiPlugin.getInstace().onResume(activity);
     }
 
-    public static void onPause() {
+    public static void onPause(Activity activity) {
         FqLog.i(TAG, "onPause: ");
-        ApiPlugin.getInstace().onPause();
+        ApiPlugin.getInstace().onPause(activity);
 
     }
 
-    public static void onStop() {
+    public static void onStop(Activity activity) {
         FqLog.i(TAG, "onStop: ");
-        ApiPlugin.getInstace().onStop();
+        ApiPlugin.getInstace().onStop(activity);
     }
 
-    public static void onDestroy() {
+    public static void onDestroy(Activity activity) {
         FqLog.i(TAG, "onDestroy: ");
-        ApiPlugin.getInstace().onDestroy();
+        ApiPlugin.getInstace().onDestroy(activity);
     }
 
     public static void onSaveInstanceState(Bundle outState) {

+ 53 - 45
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/interfaces/FQPluginApi.java

@@ -18,6 +18,7 @@ import java.util.Map;
 public abstract class FQPluginApi {
     /**
      * 初始化
+     *
      * @param activity
      * @param handler
      */
@@ -25,135 +26,142 @@ public abstract class FQPluginApi {
 
     /**
      * 登录
+     *
      * @param activity
      * @param handler
      */
     public abstract void login(final Context activity, final PluginResultHandler handler);
+
     /**
      * 支付
+     *
      * @param activity
      * @param map
      * @param handler
      */
     public abstract void pay(Context activity, Map<String, Object> map, final PluginResultHandler handler);
+
     /**
      * 登出
+     *
      * @param context
      * @param prh
      */
     public abstract void logout(Context context, PluginResultHandler prh);
+
     /**
      * 切换用户
+     *
      * @param activity
      * @param prh
      */
     public abstract void changeAccount(final Activity activity, final PluginResultHandler prh);
+
     /**
      * 退出
+     *
      * @param context
      * @param cb
      */
     public abstract void exit(Context context, final PluginResultHandler cb);
+
     /**
      * 游戏角色数据上报
+     *
      * @param data
      */
     public abstract void setRoleInfo(Bundle data);
+
     /**
      * 返回支付ID
      * 默认0 风起支付
+     *
      * @return payId
      */
     public abstract int getPayId();
+
     /**
      * 获取权限结果
+     *
      * @param requestCode
      * @param permissions
      * @param grantResults
      */
     public void onRequestPermissionsResult(int requestCode,
-                                           String[] permissions, int[] grantResults){}
+                                           String[] permissions, int[] grantResults) {
+    }
+
+
+    /**
+     * 生命周期相关方法(非业务)
+     */
+    public abstract void onCreate(Activity context, Bundle savedInstanceState);
+
+    public abstract void onSaveInstanceState(Activity context, Bundle outState);
 
+    public abstract void onRestart(Activity context);
+
+    public abstract void onStart(Activity context);
+
+    public abstract void onResume(Activity context);
+
+    public abstract void onPause(Activity context);
+
+    public abstract void onStop(Activity context);
+
+    public abstract void onDestroy(Activity context);
 
-    /** 生命周期相关方法(非业务)*/
-    public abstract void onCreate(Context context, Bundle savedInstanceState);
-    public abstract void onSaveInstanceState(Context context, Bundle outState);
-    public abstract void onRestart(Context context);
-    public abstract void onStart(Context context);
-    public abstract void onResume(Context context);
-    public abstract void onPause(Context context);
-    public abstract void onStop(Context context);
     public abstract void onNewIntent(Intent intent);
+
     public abstract void attachBaseContext(Context context);
+
     public abstract void onApplicationCreate(Context context);
+
     public abstract void onActivityResult(int requestCode, int resultCode, Intent data);
-    public abstract void onDestroy(Context context);
 
-    /** 通用回调方法(初始化、登录、支付)*/
-    public void initFqSdkSuccess(PluginResultHandler cb) {
+    /**
+     * 通用回调方法(成功/失败/取消)
+     */
+    public void fqSdkSuccess(PluginResultHandler cb) {
         if (cb != null) {
             cb.onHandlePluginResult(new PluginResult(
                     PluginResult.Status.OK));
         }
     }
 
-    public void initFqSdkError(PluginResultHandler cb) {
+    public void fqSdkError(PluginResultHandler cb) {
         if (cb != null) {
             cb.onHandlePluginResult(new PluginResult(
                     PluginResult.Status.ERROR));
         }
     }
 
-    public void loginFqSdkSuccess(PluginResultHandler cb, String channelType, JsonObject channelParams ) {
-        if (cb != null) {
-            HashMap<String, String> loginAuthData = new HashMap<>();
-            loginAuthData.put("channelType", channelType);
-            loginAuthData.put("channelParams", channelParams.toString());
-            cb.onHandlePluginResult(new PluginResult(
-                    PluginResult.Status.OK, loginAuthData));
-        }
-    }
-
-    public void loginFqSdkError(PluginResultHandler cb, String errorMessage) {
+    public void fqSdkError(PluginResultHandler cb, String errorMessage) {
         if (cb != null) {
-
-            if(null == errorMessage) {
+            if (null == errorMessage) {
                 cb.onHandlePluginResult(new PluginResult(
                         PluginResult.Status.ERROR));
             } else {
                 cb.onHandlePluginResult(new PluginResult(
                         PluginResult.Status.ERROR, errorMessage));
             }
-
-
-        }
-    }
-
-    public void loginFqSdkCancle(PluginResultHandler cb) {
-        if (cb != null) {
-            cb.onHandlePluginResult(new PluginResult(
-                    PluginResult.Status.CANCEL));
         }
     }
 
-    public void payFqSdkSuccess(PluginResultHandler cb) {
-        if (cb != null) {
-            cb.onHandlePluginResult(new PluginResult(
-                    PluginResult.Status.OK));
-        }
-    }
-
-    public void payFqSdkError(PluginResultHandler cb) {
+    public void fqSdkCancel(PluginResultHandler cb) {
         if (cb != null) {
             cb.onHandlePluginResult(new PluginResult(
                     PluginResult.Status.CANCEL));
         }
     }
 
-    public void payFqSdkCancel(PluginResultHandler cb) {
+    public void loginFqSdkSuccess(PluginResultHandler cb, String channelType, JsonObject channelParams) {
         if (cb != null) {
+            HashMap<String, String> loginAuthData = new HashMap<>();
+            loginAuthData.put("channelType", channelType);
+            loginAuthData.put("channelParams", channelParams.toString());
             cb.onHandlePluginResult(new PluginResult(
-                    PluginResult.Status.CANCEL));
+                    PluginResult.Status.OK, loginAuthData));
         }
     }
 

+ 15 - 14
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiPlugin.java

@@ -1,5 +1,6 @@
 package com.fq.channel.sdk.core.invoke;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -134,9 +135,9 @@ public class ApiPlugin extends ApiReflectManager {
         }
     }
 
-    public void onCreate(Bundle savedInstanceState) {
+    public void onCreate(Activity activity, Bundle savedInstanceState) {
         try {
-            invoke(getDeclaredMethod("onCreate" ,Bundle.class), savedInstanceState);
+            invoke(getDeclaredMethod("onCreate" ,Activity.class,Bundle.class),activity, savedInstanceState);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onCreate====没有实现该函数");
         }
@@ -150,41 +151,41 @@ public class ApiPlugin extends ApiReflectManager {
         }
     }
 
-    public void onRestart() {
+    public void onRestart(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onRestart"));
+            invoke(getDeclaredMethod("onRestart",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onRestart====没有实现该函数");
         }
     }
 
-    public void onStart() {
+    public void onStart(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onStart"));
+            invoke(getDeclaredMethod("onStart",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onStart====没有实现该函数");
         }
     }
 
-    public void onResume() {
+    public void onResume(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onResume"));
+            invoke(getDeclaredMethod("onResume",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onResume====没有实现该函数");
         }
     }
 
-    public void onPause() {
+    public void onPause(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onPause"));
+            invoke(getDeclaredMethod("onPause",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onPause====没有实现该函数");
         }
     }
 
-    public void onStop() {
+    public void onStop(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onStop"));
+            invoke(getDeclaredMethod("onStop",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onStop====没有实现该函数");
         }
@@ -198,9 +199,9 @@ public class ApiPlugin extends ApiReflectManager {
         }
     }
 
-    public void onDestroy() {
+    public void onDestroy(Activity activity) {
         try {
-            invoke(getDeclaredMethod("onDestroy"));
+            invoke(getDeclaredMethod("onDestroy",Activity.class),activity);
         } catch (NoSuchFunctionException e) {
             FqLog.e(TAG, "====onDestroy====没有实现该函数");
         }

+ 6 - 6
gradle.properties

@@ -14,11 +14,11 @@ org.gradle.jvmargs=-Xmx1536m
 # AndroidX package structure to make it clearer which packages are bundled with the
 # Android operating system, and which are packaged with your app's APK
 # https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=false
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=false
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
-android.injected.testOnly=false
+#android.useAndroidX=false
+## Automatically convert third-party libraries to use AndroidX
+#android.enableJetifier=false
+## Kotlin code style for this project: "official" or "obsolete":
+#kotlin.code.style=official
+#android.injected.testOnly=false
 
 

+ 2 - 2
settings.gradle

@@ -1,3 +1,3 @@
-include ':app', ':fq_plugin_api', ':fq_plugin_core', ':fq_plugin_base', ':fq_channel_mubao', ':fq_channel_oppo'
-//include ':fq_channel_huawei', ':fq_channel_ysdk'
+include ':app', ':fq_plugin_api', ':fq_plugin_core', ':fq_plugin_base', ':fq_channel_mubao', ':fq_channel_oppo', ':fq_channel_ysdk'
+//include ':fq_channel_huawei'
 rootProject.name='FQChannelSDK'