From 7e2df20ccc7cdfb528d309369460a4f3d66afdf1 Mon Sep 17 00:00:00 2001
From: liuxue <q3213421wrwqr>
Date: 星期四, 29 七月 2021 17:51:09 +0800
Subject: [PATCH] 0000 增加bt3 quick android 和 ios 的 SDK
---
Channel/Android/qkbt3game/release/libs/library-release-qkbt3game.aar | 0
Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png | 0
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/SMPCQuickSDK | 0
Channel/IOS/qkbt3game/Plugins/QuickSDK/libSMPCQuickChannel.a | 0
SdkProject/channel/qkbt3game/build.gradle | 4
SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameMain.java | 89 ++++
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKDefines.h | 90 ++++
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDK.h | 196 +++++++++
SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGamePlatform.java | 9
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKInitConfigure.h | 17
Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist | 12
SdkProject/channel/qkbt3game/deps.gradle | 1
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKPayOrderInfo.h | 27 +
SdkProject/channel/qkbt3game/AndroidManifest.xml | 43 ++
Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.h | 78 +++
Channel/Android/qkbt3game/debug/libs/library-debug-qkbt3game.aar | 0
Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.mm | 561 ++++++++++++++++++++++++++
Channel/Android/qkbt3game/AndroidManifest.xml | 21 +
Channel/Android/qkbt3game/deps.gradle | 4
SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameApp.java | 21 +
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKShareInfo.h | 28 +
SdkProject/channel/qkbt3game/config.properties | 1
SdkProject/gradle.properties | 2
Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKGameRoleInfo.h | 23 +
24 files changed, 1,226 insertions(+), 1 deletions(-)
diff --git a/Channel/Android/qkbt3game/AndroidManifest.xml b/Channel/Android/qkbt3game/AndroidManifest.xml
new file mode 100644
index 0000000..f83e940
--- /dev/null
+++ b/Channel/Android/qkbt3game/AndroidManifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.unity3d.player"
+ xmlns:tools="http://schemas.android.com/tools">
+ <application
+ android:allowNativeHeapPointerTagging="false">
+ <activity android:name="com.secondworld.sdk.SplashActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="com.secondworld.sdk.GameActivity"
+ android:theme="@style/UnityThemeSelector">
+ <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
+ </activity>
+ </application>
+</manifest>
diff --git a/Channel/Android/qkbt3game/debug/libs/library-debug-qkbt3game.aar b/Channel/Android/qkbt3game/debug/libs/library-debug-qkbt3game.aar
new file mode 100644
index 0000000..efa13a7
--- /dev/null
+++ b/Channel/Android/qkbt3game/debug/libs/library-debug-qkbt3game.aar
Binary files differ
diff --git a/Channel/Android/qkbt3game/deps.gradle b/Channel/Android/qkbt3game/deps.gradle
new file mode 100644
index 0000000..7526ca5
--- /dev/null
+++ b/Channel/Android/qkbt3game/deps.gradle
@@ -0,0 +1,4 @@
+//姝よ剼鏈负娓犻亾鐨勭涓夋柟杩滅▼渚濊禆搴撻厤缃紝浼氬鍒跺埌unity涓敤浜庢瀯寤�
+dependencies {
+
+}
diff --git a/Channel/Android/qkbt3game/release/libs/library-release-qkbt3game.aar b/Channel/Android/qkbt3game/release/libs/library-release-qkbt3game.aar
new file mode 100644
index 0000000..7493371
--- /dev/null
+++ b/Channel/Android/qkbt3game/release/libs/library-release-qkbt3game.aar
Binary files differ
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDK.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDK.h
new file mode 100644
index 0000000..8ecc9ce
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDK.h
@@ -0,0 +1,196 @@
+//
+// SMPCQuickSDK.h
+//
+//
+//
+//
+#define SMPC_QUICK_SDK_VERSION @"2.4.6" //QuickSDK鍩虹搴撶増鏈�
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "SMPCQuickSDKDefines.h"
+#import "SMPCQuickSDKInitConfigure.h"
+#import "SMPCQuickSDKPayOrderInfo.h"
+#import "SMPCQuickSDKGameRoleInfo.h"
+#import "SMPCQuickSDKShareInfo.h"
+
+
+#pragma mark 鍩烘湰淇℃伅
+
+@interface SMPCQuickSDK : NSObject
+
+#pragma mark 鍗曚緥瀵硅薄
++ (SMPCQuickSDK *)defaultInstance;
+
+#pragma mark 鑾峰彇娓犻亾鍩烘湰淇℃伅
+//鑾峰彇娓犻亾鍞竴鏍囪瘑锛屼笌鏈嶅姟鍣ㄧchannelID涓�鑷达紝浠讳綍鏃跺埢閮藉彲璋冪敤
+- (int)channelType;
+
+
+@end
+
+#pragma mark - 鍒濆鍖� 鎺ュ叆浜у搧淇℃伅
+
+@interface SMPCQuickSDK(Base)
+
+#pragma mark 鍒濆鍖�
+/**
+ @brief 搴旂敤鍒濆鍖� 瀹屾垚鍚庝細鍙戦�侀�氱煡kSmpcQuickSDKNotiInitDidFinished
+ @param configure 鍒濆鍖栭厤缃被锛孲DK浼氫紭鍏堜娇鐢ㄦ墦鍖呭伐鍏蜂笂鍦ㄧ嚎閰嶇疆鐨刾roductCode
+ @result 閿欒鐮�
+ @note 蹇呮帴
+ */
+- (int)initWithConfig:(SMPCQuickSDKInitConfigure *)configure application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
+/**
+ @brief 璋冪敤缁勪欢鍔熻兘锛屽弬鏁拌鐪嬪搴旂粍浠舵帴鍏ユ枃妗�
+ */
+- (int)callPlug:(NSString *)name params:(NSArray *)args;
+@end
+
+#pragma mark - 鐢ㄦ埛閮ㄥ垎 鐧诲綍 娉ㄥ唽 鐧诲嚭
+
+@interface SMPCQuickSDK(Account)
+
+/**
+ @brief 鐧诲綍鎺ュ彛 锛岀櫥褰曞悗浼氬彂閫乲SmpcQuickSDKNotiLogin閫氱煡
+ @result 閿欒鐮�
+ @note 蹇呮帴
+ */
+- (int)login;
+/**
+ @brief 鐧诲嚭鎺ュ彛 浠g爜璋冪敤娉ㄩ攢
+ @result 閿欒鐮�
+ @note 鎴愬姛璋冪敤璇ユ帴鍙e悗锛孲DK浼氬彂鍑簁SmpcQuickSDKNotiLogout閫氱煡
+ */
+- (int)logout;
+// 鐧诲綍鍚庤幏鍙栫敤鎴穟id,杩欎釜uid鍦ㄦ笭閬撲笂鍞竴锛屽涓笭閬撶殑鐢ㄦ埛uid鍙兘閲嶅
+- (NSString *)userId;
+// 鐧诲綍鍚庤幏鍙杣serToken鍙敤浜庨獙璇佺敤鎴蜂俊鎭�
+- (NSString *)userToken;
+// 鐧诲綍鍚庤幏鍙栫敤鎴锋樀绉�
+- (NSString *)userNick;
+/** 鏌ヨ娓犻亾瀹炲悕璁よ瘉淇℃伅 */
+- (NSDictionary *)realNameInfo;
+/**
+ @brief 璋冪敤娓犻亾瀹炲悕璁よ瘉
+ @result 閿欒鐮佽嫢娓犻亾娌℃湁鎻愪緵姝ゆ柟娉曚細杩斿洖闈�0
+ @note 缁撴灉浼氬彂閫乲SmpcQuickSDKNotiRealAuth閫氱煡
+*/
+- (int)realAuth;
+#pragma mark - 鏇存柊瑙掕壊淇℃伅
+// 杩涘叆娓告垙瑙掕壊锛岃鑹蹭俊鎭彉鏇存椂璋冪敤锛堟瘮濡傚崌绾э級,璇蜂娇鐢╱pdateRoleInfoWith:isCreate:
+- (void)updateRoleInfoWith:(SMPCQuickSDKGameRoleInfo *)info;
+//// 鍒涘缓瑙掕壊銆佽繘鍏ユ父鎴忚鑹层�佽鑹蹭俊鎭彉鏇存椂璋冪敤锛堟瘮濡傚崌绾э紝isCreate琛ㄧず鏄惁涓哄垱寤鸿鑹�
+- (void)updateRoleInfoWith:(SMPCQuickSDKGameRoleInfo *)info isCreate:(BOOL)isCreate;
+
+@end
+//MARK:- 鍏呭��
+@interface SMPCQuickSDK(Pay)
+/**
+ @brief 鍟嗗搧璐拱
+ * @param orderInfo
+ * @param roleInfo
+ @result 閿欒鐮�
+ */
+- (int)payOrderInfo:(SMPCQuickSDKPayOrderInfo *)orderInfo
+ roleInfo:(SMPCQuickSDKGameRoleInfo *)roleInfo;
+/**
+ @brief 鍟嗗搧淇℃伅
+ * @param productId 鍟嗗搧id
+ */
+-(void)Getlocalized:(NSString *)productIds;
+@end
+
+#pragma mark - 鐣岄潰鎺у埗
+@interface SMPCQuickSDK(UISetting)
+
+#pragma mark 娴姩鏉�
+/**
+ @brief showToolBar:
+ @brief 娴姩宸ュ叿鏍忥紝寤鸿鏄剧ず鍦ㄥ乏涓婅
+ @result 閿欒鐮�
+ @note
+ */
+- (int)showToolBar:(SMPC_QUICK_SDK_TOOLBAR_PLACE)place;
+//闅愯棌娴姩宸ュ叿鏍�
+- (int)hideToolBar;
+
+@end
+
+@interface SMPCQuickSDK(Extend)
+// 鑾峰彇QuicSDK鍚庡彴涓烘笭閬撴坊鍔犵殑鑷畾涔夐敭鍊硷紝浠讳綍鏃跺埢閮藉彲璋冪敤
+// 濡傛灉娌℃湁灏嗚繑鍥瀗il
+- (NSString *)getConfigValue:(NSString *)key;
+/**
+ @brief isFunctionSupported:
+ @brief 鍒ゆ柇褰撳墠娓犻亾鏄惁瀹炵幇浜哘uickSDK鎻愪緵鐨勬煇涓帴鍙�
+ @brief 濡傛灉褰撳墠娓犻亾娌℃湁瀹炵幇鐩稿簲鎺ュ彛锛屽氨娌℃湁鐩稿簲鎺ュ彛鐨勫洖璋�
+ @brief 渚嬪娓犻亾SDK娌℃湁瀹炵幇pausedGame杩欎釜鎺ュ彛锛屽嵆浣胯皟鐢ㄤ簡pausedGame锛屾病鏈夋殏鍋滄仮澶嶉�氱煡锛屽洜涓簆ausedGame璋冪敤鏃犳晥
+ @result 鏄惁
+ @note
+ */
+- (BOOL)isFunctionTypeSupported:(SMPC_QUICK_SDK_FUNC_TYPE)type;
+
+/**
+ @brief 杩涘叆鐢ㄦ埛涓績 濡傜敤鎴锋敞閿�鐧诲綍浼氬彂閫乲SmpcQPLogoutNotification锛堝彲澶氭瑙﹀彂锛�
+ @result 閿欒鐮�
+ */
+- (int)enterUserCenter;
+
+/**
+ 杩涘叆YunKefu
+
+ @param gameRoleInfo
+ @result 閿欒鐮�
+ */
+- (int)enterYunKeFuCenter:(SMPCQuickSDKGameRoleInfo *)gameRoleInfo;
+
+#pragma mark 鍒嗕韩
+/**
+ 鍒嗕韩
+
+ @param shareInfo shareInfo description
+ @result 閿欒鐮�
+ */
+- (int)callSDKShare:(SMPCQuickSDKShareInfo *)shareInfo;
+
+
+//***********************搴旂敤鐢熷懡鍛ㄦ湡鐨勫洖璋�*******************//
+//鍦ㄥ簲鐢ㄥ搴旂殑鐢熷懡鍛ㄦ湡鍥炶皟涓皟鐢�
+/**
+ @brief - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
+ @brief - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
+ @brief - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
+ @brief 娓犻亾澶勭悊搴旂敤璺宠浆
+ @result 閿欒鐮�
+ @note 蹇呮帴
+ */
+
+- (int)openURL:(NSURL *)url application:(UIApplication *)application;
+- (int)openURL:(NSURL *)url sourceApplication:(NSString *)sourceApp application:(UIApplication *)application annotation:(id)annotation;
+- (int)openURL:(NSURL *)url application:(UIApplication *)app options:(NSDictionary <NSString *, id>*)options;
+/**
+ @brief application:didRegisterForRemoteNotificationsWithDeviceToken:
+ @brief 鎺ㄩ�佹秷鎭�
+ @result 閿欒鐮�
+ @note 蹇呮帴
+ */
+- (int)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken;
+
+/**
+ @brief application:didFailToRegisterForRemoteNotificationsWithError:
+ @brief 鎺ㄩ�佹秷鎭�
+ @result 閿欒鐮�
+ @note 蹇呮帴
+ */
+- (int)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error;
+- (int)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
+- (int)applicationWillResignActive:(UIApplication *)application;
+- (int)applicationDidEnterBackground:(UIApplication *)application;
+- (int)applicationWillEnterForeground:(UIApplication *)application;
+- (int)applicationDidBecomeActive:(UIApplication *)application;
+- (int)applicationWillTerminate:(UIApplication *)application;
+- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window;
+- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * restorableObjects))restorationHandler;
+
+@end
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKDefines.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKDefines.h
new file mode 100644
index 0000000..b1a1f85
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKDefines.h
@@ -0,0 +1,90 @@
+//
+// SMPCQuickSDKDefines.h
+// QuickSDKs
+//
+//
+//
+
+#ifndef SMPCQuickSDKDefines_h
+#define SMPCQuickSDKDefines_h
+
+#pragma mark - Notification Name
+
+extern NSString* const kSmpcQuickSDKNotiInitDidFinished; //鍒濆鍖栨垚鍔�
+extern NSString* const kSmpcQuickSDKNotiLogin; //鐧诲綍鎴愬姛 鍒囨崲璐﹀彿鎴愬姛涔熶細鍥炶皟杩欎釜
+extern NSString* const kSmpcQCGetLocalizedNotification; //鏌ヨ鎺ュ晢鍝佷俊鎭殑閫氱煡
+extern NSString* const kSmpcQuickSDKNotiLogout; //鐢ㄦ埛娉ㄩ攢
+extern NSString* const kSmpcQuickSDKNotiRecharge; //鍏呭�肩粨鏋�
+extern NSString* const kSmpcQuickSDKNotiPauseOver; //鏆傚仠缁撴潫 杩欎釜鍥炶皟鍙互涓嶇敤鐩戝惉
+extern NSString * const kSmpcQuickSDKNotiPlugin; /*缁勪欢閫氱煡 瑙佽鎻掍欢鎺ュ叆鏂囨。锛岄粯璁ゅ彲浠ヤ笉鐢ㄧ洃鍚�*/
+extern NSString* const kSmpcQuickSDKNotiRealAuth; //瀹炲悕璁よ瘉缁撴灉閫氱煡
+
+#define QUICK_CHANNEL_TO_CP_NOTIFICATON_KEY @"quick_channel_to_cp_notification_key" //QUICK_CHANNEL_TO_CP_NOTIFICATON_KEY杩欎釜閿畾涔変簡QuickSDK鏍囧噯鎺ュ彛涓嶈兘鎻愪緵鏇村鐨勪俊鎭粰cp閭h竟鏃剁殑浼犺緭鏂规锛岃繖涓�氱煡甯︿笂娓犻亾SDK闇�瑕佷紶閫掑埌cp鐨勪俊鎭�.閫氬父涓嶉渶瑕侊紝閬囧埌浜嗗啀璁ㄨ
+
+#pragma mark - 閫氱煡userInfo涓殑閲嶈key 閿欒鍜屼俊鎭�
+
+extern NSString* const kSmpcQuickSDKKeyError; /*Notification userinfo error Key */
+extern NSString* const kSmpcQuickSDKKeyMsg; /*Notification userinfo msg Key */
+
+// 璁㈠崟鍙�
+#define kSmpcQuickSDKKeyOrderId @"orderId"
+// 娓告垙寮�鍙戝晢缁欑殑璁㈠崟鍙�
+#define kSmpcQuickSDKKeyCpOrderId @"cpOrderId"
+// 绗�3鏂规笭閬搒dk缁欑殑璁㈠崟鍙�
+#define kSmpcQuickSDKKeySdkOrderId @"sdkOrderId"
+// 閫忎紶鍙傛暟
+#define kSmpcQuickSDKKeyExtraParams @"extraParams"
+// user_token
+#define kSmpcQuickSDKKeyUserToken @"user_token"
+/** 瀹炲悕璁よ瘉鍥炶皟鏄惁宸插疄鍚� YES:宸茶璇丯O:鏈璇�*/
+#define kSmpcQuickSDKKeyRealName @"realName"
+/** 瀹炲悕璁よ瘉鍚庡勾榫� */
+#define kSmpcQuickSDKKeyRealAge @"age"
+/** 娓犻亾瀹炲悕璁よ瘉澶辫触鏄惁鍙互缁х画娓告垙 YES:鍙互 NO:涓嶅彲浠� */
+#define kSmpcQuickSDKKeyRealResumeGame @"resumeGame"
+/** 瀹炲悕璁よ瘉棰勭暀瀛楁 */
+#define kSmpcQuickSDKKeyRealOther @"other"
+
+#pragma mark - 娴姩鏉′綅缃� Enum
+typedef enum {
+ SMPC_QUICK_SDK_TOOLBAR_TOP_LEFT = 1, /* 宸︿笂 */
+ SMPC_QUICK_SDK_TOOLBAR_TOP_RIGHT = 2, /* 鍙充笂 */
+ SMPC_QUICK_SDK_TOOLBAR_MID_LEFT = 3, /* 宸︿腑 */
+ SMPC_QUICK_SDK_TOOLBAR_MID_RIGHT = 4, /* 鍙充腑 */
+ SMPC_QUICK_SDK_TOOLBAR_BOT_LEFT = 5, /* 宸︿笅 */
+ SMPC_QUICK_SDK_TOOLBAR_BOT_RIGHT = 6, /* 鍙充笅 */
+}SMPC_QUICK_SDK_TOOLBAR_PLACE;
+
+
+#pragma mark - 閿欒鐮�
+
+typedef enum {
+ SMPC_QUICK_SDK_ERROR_NONE = 0, /* 娌℃湁閿欒 */
+ SMPC_QUICK_SDK_ERROR_UNKNOWN = -1, /* 鏈煡閿欒 */
+ SMPC_QUICK_SDK_ERROR_NETWORK = -2, /* 缃戠粶杩炴帴閿欒 */
+ SMPC_QUICK_SDK_ERROR_CHECKFAILED = -3, /* 鐧诲綍鏍¢獙澶辫触 */
+ SMPC_QUICK_SDK_ERROR_CHECKLOGINING = -4, /* 姝e湪鏍¢獙鐧诲綍 */
+ SMPC_QUICK_SDK_ERROR_PARAM = -10, /* 鍙傛暟閿欒 */
+ SMPC_QUICK_SDK_ERROR_NOT_INIT = -20, /* 杩樻病鏈夊垵濮嬪寲 */
+ SMPC_QUICK_SDK_ERROR_INIT_FAILED = -21, /* 鍒濆鍖栧け璐�*/
+ SMPC_QUICK_SDK_ERROR_UNSUPPORTED = -100, /* 鍔熻兘涓嶈鏀寔 */
+
+ SMPC_QUICK_SDK_ERROR_NOT_LOGIN = -301, /* 娌℃湁鐧诲綍鐢ㄦ埛 */
+ SMPC_QUICK_SDK_ERROR_HAD_LOGIN = -302, /* 宸叉湁鐧诲綍鐢ㄦ埛 */
+ SMPC_QUICK_SDK_ERROR_LOGOUT_FAIL = -303, /* 鐢ㄦ埛鐧诲嚭澶辫触 */
+
+ SMPC_QUICK_SDK_ERROR_RECHARGE_FAILED = -400, /* 鍏呭�煎け璐� */
+ SMPC_QUICK_SDK_ERROR_RECHARGE_CANCELLED = -401, /* 鐢ㄦ埛鍏呭�煎彇娑� */
+
+
+}SMPC_QUICK_SDK_ERROR_CODE;
+typedef enum {
+ SMPC_QUICK_SDK_FUNC_TYPE_PAUSED_GAME = 1, /*鏆傚仠娓告垙*/
+ SMPC_QUICK_SDK_FUNC_TYPE_ENTER_USER_CENTER = 2, /*杩涘叆鐢ㄦ埛涓績*/
+ SMPC_QUICK_SDK_FUNC_TYPE_ENTER_BBS = 3, /*杩涘叆璁哄潧*/
+// SMPC_QUICK_SDK_FUNC_TYPE_OPEN_URL = 4锛�
+ SMPC_QUICK_SDK_FUNC_TYPE_SHOW_TOOLBAR = 5, /*鏄剧ず娴姩宸ュ叿鏍�*/
+ SMPC_QUICK_SDK_FUNC_TYPE_HIDE_TOOLBAR = 6, /*闅愯棌娴姩宸ュ叿鏍�*/
+ SMPC_QUICK_SDK_FUNC_TYPE_ENTER_CUSTOMER_CENTER = 7, /*杩涘叆瀹㈡湇涓績*/
+}SMPC_QUICK_SDK_FUNC_TYPE;
+#endif
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKGameRoleInfo.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKGameRoleInfo.h
new file mode 100644
index 0000000..a62682c
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKGameRoleInfo.h
@@ -0,0 +1,23 @@
+//
+// SMPCQuickSDKGameRoleInfo.h
+// SMPCQuickSDK
+//
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+@interface SMPCQuickSDKGameRoleInfo : NSObject
+
+@property (nonatomic,copy) NSString *serverId; //鏈嶅姟鍣↖d锛屽繀濉�
+@property (nonatomic,copy) NSString *serverName; //鏈嶅姟鍣ㄥ悕绉帮紝蹇呭~
+@property (nonatomic,copy) NSString *gameRoleName; //瑙掕壊鍚嶏紝蹇呭~
+@property (nonatomic,copy) NSString *gameRoleID; //瑙掕壊ID锛屽繀濉�
+@property (nonatomic,copy) NSString *gameUserBalance; //鐜╁铏氭嫙璐у竵浣欓锛屽繀濉紝鍙殢鎰�
+@property (nonatomic,copy) NSString *vipLevel; //鐜╁vip绛夌骇锛屽繀濉紝鍙殢鎰�
+@property (nonatomic,copy) NSString *gameUserLevel; //鐜╁绛夌骇锛屽繀濉紝鍙殢鎰�
+@property (nonatomic,copy) NSString *partyName; //鍏細鍚嶇О锛屽繀濉紝鍙殢鎰�
+@property (nonatomic, copy) NSString * creatTime; //瑙掕壊鍒涘缓鏃堕棿(10浣嶆椂闂存埑)锛屽繀濉�,娌℃湁浼�0
+@property (nonatomic, copy) NSString * fightPower; //鎴樺姏锛屽彲涓嶄紶
+@property (nonatomic, copy) NSString * profession; //瑙掕壊鑱屼笟, 鍙笉浼�
+@end
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKInitConfigure.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKInitConfigure.h
new file mode 100644
index 0000000..bf4c9bf
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKInitConfigure.h
@@ -0,0 +1,17 @@
+//
+// SMPCQuickSDKInitConfigure.h
+// SMPCQuickSDK
+//
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+
+@interface SMPCQuickSDKInitConfigure : NSObject
+
+@property (nonatomic, copy) NSString *productCode; //QuickSDK鎻愪緵鐨� product_code
+@property (nonatomic, copy) NSString *productKey; //QuickSDK鎻愪緵鐨� product_token
+
+
+@end
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKPayOrderInfo.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKPayOrderInfo.h
new file mode 100644
index 0000000..225d6d1
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKPayOrderInfo.h
@@ -0,0 +1,27 @@
+//
+// SMPCQuickSDKPayOrderInfo.h
+// SMPCQuickSDK
+//
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+@interface SMPCQuickSDKPayOrderInfo : NSObject
+@property(nonatomic,copy) NSString *goodsID; //鍟嗗搧ID IAP鏃朵负鑻规灉寮�鍙戣�呭悗鍙伴厤缃殑鍟嗗搧id锛屽繀濉�
+@property(nonatomic,copy) NSString *productName; //鍟嗗搧鍚嶇О锛屽繀濉�
+@property(nonatomic,copy) NSString *cpOrderID; //娓告垙璁㈠崟ID锛屽繀濉�
+@property(nonatomic,assign) NSUInteger count; //鍟嗗搧鏁伴噺锛屽繀濉�
+@property(nonatomic,assign) float amount; //鍟嗗搧鎬讳环,蹇呭~锛岃繖涓緢閲嶈
+@property(nonatomic,copy) NSString *callbackUrl; //璐拱鍥炶皟鍦板潃锛岄�夊~,浼樺厛浣跨敤鏈嶅姟鍣ㄧ閰嶇疆鐨�
+@property(nonatomic,copy) NSString *extrasParams; //閫忎紶瀛楁锛岄�夊~锛屾湇鍔″櫒鍥炶皟鍘熸牱浼犻��
+
+//deprecated 搴熷純鐨勶紝鍙互涓嶄紶鍊�
+@property(nonatomic,assign) float price; //鍟嗗搧鍗曚环锛岄�夊~,濡傛灉娓犻亾闇�瑕侊紝Quick灏嗛�氳繃鎬讳环鍜屾暟閲忔潵璁$畻
+@property(nonatomic,copy) NSString *productDesc; //鍟嗗搧鎻忚堪锛岄�夊~锛岄粯璁uickSDK浣跨敤鈥滄暟閲�+鍟嗗搧鍚嶇О鈥滄嫾鎺ワ紝濡傛灉鏁伴噺涓�1锛屼娇鐢ㄥ晢鍝佸悕绉�
+@property(nonatomic,copy) NSString *quantifier; //鍟嗗搧閲忚瘝锛岄�夊~锛屽彲浠ヤ负@""绌轰覆
+
++ (instancetype)info;//鑾峰彇涓�涓璞″睘鎬у�间负nil锛屾暟鍊煎睘鎬т负0鐨勫疄渚�
+
+
+@end
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKShareInfo.h b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKShareInfo.h
new file mode 100644
index 0000000..f0cd676
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/Headers/SMPCQuickSDKShareInfo.h
@@ -0,0 +1,28 @@
+//
+// SMPCQuickSDKShareInfo.h
+// SMPCQuickSDK
+//
+// Created by xiaoxiao on 2019/2/19.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface SMPCQuickSDKShareInfo : NSObject
+
+@property (nonatomic, strong) NSString *type; //鍒嗕韩绫诲瀷 1.facebook鍒嗕韩杩炴帴 2.facebook鍒嗕韩鍥剧墖 3.寰俊鍒嗕韩鏂囨湰 4.寰俊鍒嗕韩鍥剧墖
+@property (nonatomic, strong) NSString *title; //鍒嗕韩鏍囬
+@property (nonatomic, strong) NSString *content; //鍒嗕韩鍐呭
+@property (nonatomic, strong) NSString *imgPath; //鍒嗕韩鍥剧墖鏈湴鍦板潃
+@property (nonatomic, strong) NSString *filePath; //鍒嗕韩鏂囦欢璺緞
+@property (nonatomic, strong) NSString *imgUrl; //鍒嗕韩鍥剧墖缃戠粶鍦板潃
+@property (nonatomic, strong) NSString *sencetype; //鍙戦�佸満鏅� 0 鑱婂ぉ鐣岄潰锛�1 鏈嬪弸鍦堬紝2 鏀惰棌
+@property (nonatomic, strong) NSString *url; //鍒嗕韩閾炬帴
+@property (nonatomic, strong) NSString *shareTo; //鍒嗕韩鍒板摢閲�
+@property (nonatomic, strong) NSString *extenal; //棰濆澶囨敞
+@property (nonatomic, assign) float width; //缂╃暐鍥惧
+@property (nonatomic, assign) float height; //缂╃暐鍥鹃珮
+
+@end
+
+
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/SMPCQuickSDK b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/SMPCQuickSDK
new file mode 100644
index 0000000..d514ff6
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/SMPCQuickSDK.framework/SMPCQuickSDK
Binary files differ
diff --git a/Channel/IOS/qkbt3game/Plugins/QuickSDK/libSMPCQuickChannel.a b/Channel/IOS/qkbt3game/Plugins/QuickSDK/libSMPCQuickChannel.a
new file mode 100644
index 0000000..d78716b
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/QuickSDK/libSMPCQuickChannel.a
Binary files differ
diff --git a/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png
new file mode 100644
index 0000000..7ac8e4d
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png
Binary files differ
diff --git a/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist
new file mode 100644
index 0000000..e8511cd
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>JPush_AppKey</key>
+ <string>111a5f817592ddc68edc802c</string>
+ <key>TTTrack_AppID</key>
+ <string>155761</string>
+ <key>TrackingIO_AppKey</key>
+ <string>12aef4c284c6996703765fe9f7422428</string>
+</dict>
+</plist>
diff --git a/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.h b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.h
new file mode 100644
index 0000000..b6ee185
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.h
@@ -0,0 +1,78 @@
+//
+// UniversalSDK.h
+// Unity-iPhone
+//
+// Created by 钄$�� on 2018/4/24.
+//
+
+#ifndef __UNIVERSALSDK_H_
+#define __UNIVERSALSDK_H_
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+#define UNITY_OBJ_NAME "SDKUtility"
+#define UNITY_FUNC_NAME "HandleSdkMessage"
+
+#define PRODUCT_CODE @"40450025922275820036898902533267"
+#define PRODUCT_KEY @"31232581"
+
+#define S2U_BatteryLevel 1
+#define S2U_BatteryCharging 2
+#define S2U_SdkInitComplete 3
+#define S2U_DeviceInfo 4
+#define S2U_PushClientID 5
+#define S2U_FreePlatformInitOk 100
+#define S2U_FreePlatformInitFail 101
+#define S2U_FreePlatformLoginOk 102
+#define S2U_FreePlatformLoginFail 103
+#define S2U_FreePlatformLoginCancel 104
+#define S2U_FreePlatformLogoutOk 105
+#define S2U_FreePlatformLogoutFail 106
+#define S2U_FreePlatformSwitchAccountOk 107
+#define S2U_FreePlatformPayOk 108
+#define S2U_FreePlatformPayFail 109
+#define S2U_FreePlatformPayCancel 110
+#define S2U_FreePlatformRegisterOk 111
+
+
+#define U2S_BatteryListenStart 1
+#define U2S_BatteryListenStop 2
+#define U2S_CopyContent 7
+#define U2S_OpenWebView 8
+#define U2S_Init 9
+#define U2S_FreePlatformInit 100
+#define U2S_FreePlatformLogin 101
+#define U2S_FreePlatformLogout 102
+#define U2S_FreePlatformSwitchAccount 103
+#define U2S_FreePlatformPay 104
+#define U2S_PayFinished 105
+#define U2S_CreateRole 106
+#define U2S_RoleLogin 107
+#define U2S_RoleLevelUp 108
+#define U2S_JPushAddLocalMessage 200
+#define U2S_JPushRemoveLocalMessage 201
+#define U2S_MakeKeyAndVisible 300
+#define U2S_SendRegistEvent 500
+#define U2S_SendLoginEvent 600
+
+#define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
+
+static BOOL JPush_IsProduction = FALSE;
+
+@interface UniversalSDK : NSObject {
+ UIWebView* m_UIWebView;
+ UIButton* m_CloseBtn;
+}
+
+-(void) HandleUnityMessage:(NSString*) json;
+-(void) Init;
+-(id) APNativeJSONObject:(NSData*) data;
+-(NSData*) APNativeJSONData:(id) obj;
+-(void) RemoveLocalNotificationWithIdentifierKey:(NSString*) idKey;
+
+-(void) QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
+
+@end
+
+#endif
diff --git a/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.mm b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.mm
new file mode 100644
index 0000000..e8c96b3
--- /dev/null
+++ b/Channel/IOS/qkbt3game/Plugins/The2thWorldSDK/UniversalSDK.mm
@@ -0,0 +1,561 @@
+//
+// UniversalSDK.m
+// Unity-iPhone
+//
+// Created by 钄$�� on 2018/4/24.
+//
+
+#import "UniversalSDK.h"
+#import "AdSupport/AdSupport.h"
+#import "opus.h"
+#ifdef NSFoundationVersionNumber_iOS_9_x_Max
+#import <UserNotifications/UserNotifications.h>
+#endif
+#import "SystemConfiguration/CaptiveNetwork.h"
+#import <SMPCQuickSDK/SMPCQuickSDK.h>
+
+@interface UniversalSDK()<UIWebViewDelegate>
+@end
+
+@implementation UniversalSDK
+
+#define CHANNEL_NUM 1
+
+static int s_frequency = 16000;
+static int s_bitRate = 20000;
+static int s_bandMode = OPUS_BANDWIDTH_WIDEBAND;
+static int s_frameSize = 160;
+static int sBatteryLevel = -1;
+static int sBatteryState = -1;
+static NSString* sAppID;
+static NSString* sGameID;
+static NSString* sUserName;
+static NSThread* _thread;
+
+-(void) Init
+{
+ UIDevice *_device = [UIDevice currentDevice];
+ _device.batteryMonitoringEnabled = true;
+
+ NSString* _uniqueID = [[NSUserDefaults standardUserDefaults] objectForKey:@"tsw_unique_id"];
+ //鑾峰彇IDFA
+ NSString* _idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
+
+ if(_uniqueID == NULL || [_uniqueID length] <= 0)
+ {
+ //鍒ゆ柇IDFA鏄惁涓虹┖
+ BOOL isEmpty = [[_idfa stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@"0" withString:@""].length;
+ if (isEmpty) {
+ //涓嶄负绌猴紝灏咺DFA浣滀负鍞竴鏍囪瘑
+ _uniqueID = _idfa;
+ }
+ else {
+ //涓虹┖锛岃幏鍙朥UID浣滀负鍞竴鏍囪瘑
+ _uniqueID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
+ }
+
+ //淇濆瓨鍞竴璁惧鏍囪瘑,濡傚凡瀛樺湪鍒欎笉杩涜浠讳綍澶勭悊
+ [[NSUserDefaults standardUserDefaults] setObject:_uniqueID forKey:@"tsw_unique_id"];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+ }
+
+ // 鍙栧緱UserAgent
+ UIWebView* _webView = [[UIWebView alloc] initWithFrame:CGRectZero];
+ NSString* _userAgent = [_webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
+
+ // 鍙戦�佽澶囦俊鎭�
+ NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ _uniqueID,@"unique_id",
+ _idfa,@"android_id",
+ [NSNumber numberWithInt:S2U_DeviceInfo],@"code",
+ _userAgent,@"userAgent",nil];
+ [self SendMessageToUnity:_dict];
+}
+
+-(void)SendMessageToUnity:(NSDictionary*)dict
+{
+ BOOL _result = [NSJSONSerialization isValidJSONObject:dict];
+ if(_result)
+ {
+ NSData* _jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
+ UnitySendMessage(UNITY_OBJ_NAME, UNITY_FUNC_NAME,
+ [[[NSString alloc] initWithData:_jsonData encoding:NSUTF8StringEncoding] UTF8String]);
+ }
+}
+
+-(void) BatteryThread {
+ while (TRUE)
+ {
+ [NSThread sleepForTimeInterval:1];
+
+ UIDevice *_device = [UIDevice currentDevice];
+
+ int _state = [_device batteryState];
+ if(_state != sBatteryState){
+ sBatteryState = _state;
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:sBatteryState], @"status",
+ [NSNumber numberWithInt:S2U_BatteryCharging], @"code", nil];
+
+ [self SendMessageToUnity:_dict];
+ }
+
+ int _level = (int)([_device batteryLevel] * 100);
+ if(_level != sBatteryLevel){
+ sBatteryLevel = _level;
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:sBatteryLevel], @"level",
+ [NSNumber numberWithInt:S2U_BatteryLevel], @"code", nil];
+
+ [self SendMessageToUnity:_dict];
+ }
+ }
+}
+
+-(void) OpenURL:(NSString*) url {
+
+ if(m_UIWebView != NULL) {
+ [self btnClick:NULL];
+ return;
+ }
+
+ CGRect _bounds = UnityGetMainWindow().bounds;
+
+ float _scale = _bounds.size.width / 1334;
+
+ float _width = 982 * _scale;
+ float _height = 560 * _scale;
+
+ float _offsetX = (_bounds.size.width - _width) * .5f;
+ float _offsetY = (_bounds.size.height - _height) * .5f;
+
+ m_UIWebView = [[UIWebView alloc] initWithFrame:CGRectMake(_offsetX, _offsetY, _width, _height)];
+ m_UIWebView.delegate = self;
+ m_UIWebView.scalesPageToFit = YES ;
+ m_UIWebView.scrollView.scrollEnabled = YES;
+ m_UIWebView.scrollView.bounces = NO;
+ NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:url]];
+ [m_UIWebView loadRequest:request];
+}
+
+-(void) btnClick:(UIButton*)sender {
+ [m_CloseBtn removeFromSuperview];
+ [m_CloseBtn removeTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+ m_CloseBtn = NULL;
+
+ NSURLCache *_cache = [NSURLCache sharedURLCache];
+ [_cache removeAllCachedResponses];
+ [_cache setDiskCapacity:0];
+ [_cache setMemoryCapacity:0];
+
+ [m_UIWebView removeFromSuperview];
+ m_UIWebView = NULL;
+}
+
+-(void)webViewDidStartLoad:(UIWebView *)webView{
+}
+
+-(void)webViewDidFinishLoad:(UIWebView *)webView{
+
+ [UnityGetMainWindow().rootViewController.view addSubview:m_UIWebView];
+ CGRect _bounds = UnityGetMainWindow().bounds;
+
+ float _scale = _bounds.size.width / 1334;
+
+ float _width = 982 * _scale;
+ float _height = 560 * _scale;
+
+ m_CloseBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
+ [m_CloseBtn setFrame:CGRectMake(_width - 455 * _scale, _height - 86 * _scale, 180 * _scale, 72 * _scale)];
+ [m_CloseBtn setTitle:@"鎴戠煡閬撲簡" forState:UIControlStateNormal];
+
+ NSString *_bundlePath = [[NSBundle mainBundle] pathForResource:@"The2thWorldRES.bundle" ofType:nil];
+ NSBundle *_bundle = [NSBundle bundleWithPath:_bundlePath];
+ NSString *pic1Path = [_bundle pathForResource:@"TY_AN_34.png" ofType:nil];
+
+ [m_CloseBtn setBackgroundImage:[UIImage imageWithContentsOfFile:pic1Path] forState:UIControlStateNormal];
+ [m_CloseBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
+ [m_CloseBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+
+ [m_UIWebView addSubview:m_CloseBtn];
+}
+
+-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
+}
+
+-(void)QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+
+ // 鐩戝惉鍒濆鍖�
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(smpcQpInitResult:)
+ name:kSmpcQuickSDKNotiInitDidFinished
+ object:nil];
+ // 鐩戝惉鐧诲綍
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpLoginResult:) name:kSmpcQuickSDKNotiLogin object:nil];
+ // 鐩戝惉娉ㄩ攢
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpLogoutResult:) name:kSmpcQuickSDKNotiLogout object:nil];
+ // 鐩戝惉鍏呭�肩粨鏋�
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpRechargeResult:) name:kSmpcQuickSDKNotiRecharge object:nil];
+
+ // --------------------- 鍒濆鍖� --------------------------
+ SMPCQuickSDKInitConfigure *cfg = [[SMPCQuickSDKInitConfigure alloc] init];
+ cfg.productKey = PRODUCT_KEY;
+ cfg.productCode = PRODUCT_CODE;
+ [[SMPCQuickSDK defaultInstance] initWithConfig:cfg application:application didFinishLaunchingWithOptions:launchOptions];
+ // ------------------------------------------------------
+}
+
+- (void)smpcQpInitResult:(NSNotification *)notify {
+ NSLog(@"init result:%@",notify);
+ NSDictionary *userInfo = notify.userInfo;
+ int errorCode = [userInfo[kSmpcQuickSDKKeyError] intValue];
+ switch (errorCode) {
+ case SMPC_QUICK_SDK_ERROR_NONE:
+ {
+ NSLog(@"鍒濆鍖栨垚鍔�");
+// NSString *_appid = [[SMPCQuickSDK defaultInstance] getConfigValue:@"zfappid"];
+// if (_appid == nil || [_appid isEqualToString:@""])
+// {
+// _appid = sAppID;
+// }
+ NSString *_appid = sAppID;
+ NSLog(@"init _appid:%@",_appid);
+
+ NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_SdkInitComplete], @"code",
+ @"quick", @"channelPlatform",
+ _appid, @"yj_appid", _appid, @"yj_spid", nil];
+ [self SendMessageToUnity:_dict];
+ }
+ break;
+ case SMPC_QUICK_SDK_ERROR_INIT_FAILED:
+ default:
+ {
+ //鍒濆鍖栧け璐�
+ NSLog(@"娓犻亾鍒濆鍖栧け璐�");
+ }
+ break;
+ }
+
+}
+
+- (void)smpcQpLoginResult:(NSNotification *)notify {
+ NSLog(@"鐧诲綍鎴愬姛閫氱煡%@",notify);
+ int error = [[[notify userInfo] objectForKey:kSmpcQuickSDKKeyError] intValue];
+ NSDictionary *userInfo = [notify userInfo];
+ if (error == 0) {
+ NSString *uid = [[SMPCQuickSDK defaultInstance] userId];
+ NSString *cid =[[SMPCQuickSDK defaultInstance] getConfigValue:@"cid"];
+ NSString *gameUID = [NSString stringWithFormat:@"%@%@%@", uid,@"@",cid];
+ NSString *UserName = [[SMPCQuickSDK defaultInstance] userId];
+ //鑾峰彇user_token锛岀敤浜庝粠鏈嶅姟鍣ㄥ幓楠岃瘉鐢ㄦ埛淇℃伅
+ NSString *user_token = userInfo[kSmpcQuickSDKKeyUserToken];
+
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSDictionary dictionaryWithObjectsAndKeys:user_token, @"token",
+ UserName, @"userName",
+ gameUID, @"account", nil],@"info",
+ [NSNumber numberWithInt:S2U_FreePlatformLoginOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+ }
+}
+
+- (void)smpcQpLogoutResult:(NSNotification *)notify {
+ NSLog(@"%s",__func__);
+ NSDictionary *userInfo = notify.userInfo;
+ int errorCode = [userInfo[kSmpcQuickSDKKeyError] intValue];
+ switch (errorCode) {
+ case SMPC_QUICK_SDK_ERROR_NONE:
+ {
+ NSLog(@"娉ㄩ攢鎴愬姛");
+ //娉ㄩ攢鎴愬姛
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:S2U_FreePlatformLogoutOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+ }
+ break;
+ case SMPC_QUICK_SDK_ERROR_LOGOUT_FAIL:
+ default:
+ {
+ //娉ㄩ攢澶辫触
+ NSLog(@"娉ㄩ攢澶辫触");
+ }
+ break;
+ }
+ if (errorCode == SMPC_QUICK_SDK_ERROR_NONE) {
+
+ }
+
+}
+
+- (void)smpcQpRechargeResult:(NSNotification *)notify{
+ NSLog(@"鍏呭�肩粨鏋�%@",notify);
+ NSDictionary *userInfo = notify.userInfo;
+ int error = [[userInfo objectForKey:kSmpcQuickSDKKeyError] intValue];
+ switch (error) {
+ case SMPC_QUICK_SDK_ERROR_NONE:
+ {
+ //鍏呭�兼垚鍔�
+ //QuickSDK璁㈠崟鍙�,cp涓嬪崟鏃朵紶鍏ョ殑璁㈠崟鍙凤紝娓犻亾sdk鐨勮鍗曞彿锛宑p涓嬪崟鏃朵紶鍏ョ殑鎵╁睍鍙傛暟
+ NSString *orderID = userInfo[kSmpcQuickSDKKeyOrderId];
+ NSString *cpOrderID = userInfo[kSmpcQuickSDKKeyCpOrderId];
+ NSLog(@"鍏呭�兼垚鍔熸暟鎹細%@,%@",orderID,cpOrderID);
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_FreePlatformPayOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+ }
+ break;
+ case SMPC_QUICK_SDK_ERROR_RECHARGE_CANCELLED:
+ case SMPC_QUICK_SDK_ERROR_RECHARGE_FAILED:
+ {
+ //鍏呭�煎け璐�
+ NSString *orderID = userInfo[kSmpcQuickSDKKeyOrderId];
+ NSString *cpOrderID = userInfo[kSmpcQuickSDKKeyCpOrderId];
+ NSLog(@"鍏呭�煎け璐ユ暟鎹�%@,%@",orderID,cpOrderID);
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_FreePlatformPayFail], @"code", nil];
+ [self SendMessageToUnity:_dict];
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+-(id) APNativeJSONObject:(NSData *)data{
+ if (!data) {
+ return nil;
+ }
+
+ NSError *error = nil;
+ id retId = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
+
+ if (error) {
+ NSLog(@"%s trans data to obj with error: %@", __func__, error);
+ return nil;
+ }
+
+ return retId;
+}
+
+-(void)HandleUnityMessage:(NSString *)json {
+
+ NSLog(@"鏀跺埌Unity鍙戞潵鐨勬秷鎭� => %@", json);
+
+ NSData *_jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
+ NSDictionary *_dict = [self APNativeJSONObject:_jsonData];
+
+ switch([[_dict objectForKey:@"code"] intValue]){
+ case U2S_Init:
+ sAppID = _dict[@"appID"];
+ sGameID = _dict[@"gameID"];
+ [self Init];
+
+ break;
+ case U2S_CopyContent:
+ [UIPasteboard generalPasteboard].string = _dict[@"content"];
+ break;
+ case U2S_FreePlatformInit:
+ break;
+ case U2S_MakeKeyAndVisible:
+ {
+ UIWindow * _window = [[UIApplication sharedApplication].delegate window];
+ if (_window != nil && _window.rootViewController != nil) {
+ [_window makeKeyAndVisible];
+ }
+ }
+ break;
+ case U2S_OpenWebView:
+ [self OpenURL:_dict[@"url"]];
+ break;
+ case U2S_FreePlatformLogin:
+ {
+ int error = [[SMPCQuickSDK defaultInstance] login];
+ if (error != 0) {
+ NSLog(@"U2S_FreePlatformLogin => %d",error);
+ }
+ }
+ break;
+ case U2S_FreePlatformLogout:
+ {
+ [[SMPCQuickSDK defaultInstance] logout];
+ }
+ break;
+ case U2S_CreateRole:
+ {
+ // 鏇存柊瑙掕壊淇℃伅
+ SMPCQuickSDKGameRoleInfo *gameRoleInfo = [SMPCQuickSDKGameRoleInfo new];
+ gameRoleInfo.serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]];
+ gameRoleInfo.gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]];
+ gameRoleInfo.serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; //闇�瑕佹槸鏁板瓧瀛楃涓�
+ gameRoleInfo.gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]];
+ gameRoleInfo.gameUserBalance = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]];
+ gameRoleInfo.vipLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]];
+ gameRoleInfo.gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]];
+ gameRoleInfo.partyName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"familyName"]];
+ gameRoleInfo.creatTime = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"createTime"]];
+
+ [[SMPCQuickSDK defaultInstance] updateRoleInfoWith:gameRoleInfo isCreate:YES];//濡傛灉杩欎釜瑙掕壊鏄垰鍒氬垱寤虹殑锛岃繖閲宨sCreate鍙互浼燳ES
+ break;
+ }
+ case U2S_RoleLogin:
+ {
+ // 鏇存柊瑙掕壊淇℃伅
+ SMPCQuickSDKGameRoleInfo *gameRoleInfo = [SMPCQuickSDKGameRoleInfo new];
+ gameRoleInfo.serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]];
+ gameRoleInfo.gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]];
+ gameRoleInfo.serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; //闇�瑕佹槸鏁板瓧瀛楃涓�
+ gameRoleInfo.gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]];
+ gameRoleInfo.gameUserBalance = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]];
+ gameRoleInfo.vipLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]];
+ gameRoleInfo.gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]];
+ gameRoleInfo.partyName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"familyName"]];
+ gameRoleInfo.creatTime = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"createTime"]];
+
+ [[SMPCQuickSDK defaultInstance] updateRoleInfoWith:gameRoleInfo isCreate:NO];//濡傛灉杩欎釜瑙掕壊鏄垰鍒氬垱寤虹殑锛岃繖閲宨sCreate鍙互浼燳ES
+ break;
+ }
+
+ case U2S_RoleLevelUp:
+ {
+ // 鏇存柊瑙掕壊淇℃伅
+ SMPCQuickSDKGameRoleInfo *gameRoleInfo = [SMPCQuickSDKGameRoleInfo new];
+ gameRoleInfo.serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]];
+ gameRoleInfo.gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]];
+ gameRoleInfo.serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; //闇�瑕佹槸鏁板瓧瀛楃涓�
+ gameRoleInfo.gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]];
+ gameRoleInfo.gameUserBalance = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]];
+ gameRoleInfo.vipLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]];
+ gameRoleInfo.gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]];
+ gameRoleInfo.partyName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"familyName"]];
+ gameRoleInfo.creatTime = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"createTime"]];
+
+ [[SMPCQuickSDK defaultInstance] updateRoleInfoWith:gameRoleInfo isCreate:NO];//濡傛灉杩欎釜瑙掕壊鏄垰鍒氬垱寤虹殑锛岃繖閲宨sCreate鍙互浼燳ES
+ break;
+ }
+ case U2S_FreePlatformPay:
+ {
+ SMPCQuickSDKGameRoleInfo *role = [[SMPCQuickSDKGameRoleInfo alloc] init];
+ SMPCQuickSDKPayOrderInfo *order = [[SMPCQuickSDKPayOrderInfo alloc] init];
+
+ role.serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]];
+ role.gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]];
+ role.serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; //闇�瑕佹槸鏁板瓧瀛楃涓�
+ role.gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]];
+ role.gameUserBalance = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]];
+ role.vipLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]];
+ role.gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]];
+ role.partyName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"familyName"]];
+ role.creatTime = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"createTime"]];
+
+ order.goodsID = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"cpInfo"]]; //蹇呭~ iap鏃舵敞鎰忓拰鑻规灉寮�鍙戣�呭悗鍙颁竴鑷达紝鎴栬�呮笭閬撴槧灏勭殑
+ order.productName = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"title"]];//蹇呭~
+ order.cpOrderID = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"orderId"]]; //蹇呭~ 娓告垙璁㈠崟鍙�
+ order.count = 1; //蹇呭~ 鏁伴噺
+ order.amount = [[_dict objectForKey:@"mount"] floatValue]; //蹇呭~ 鎬讳环
+
+// NSString *_appid = [[SMPCQuickSDK defaultInstance] getConfigValue:@"zfappid"];
+// if (_appid == nil || [_appid isEqualToString:@""])
+// {
+// _appid = sAppID;
+// }
+ NSString *_appid = sAppID;
+ order.extrasParams = [NSString stringWithFormat:@"{\"appid\":\"%@\",\"cpinfo\":\"%@\",\"cporderid\":\"%@\"}",
+ _appid,
+ [_dict objectForKey:@"cpInfo"],
+ [_dict objectForKey:@"orderId"]
+ ];
+// //涓埆娓犻亾瑕佹眰鍗曚环*鏁伴噺==鎬讳环
+// if([SMPCQuickSDK defaultInstance].channelType == 9999){
+// //閫氳繃鍒ゆ柇娓犻亾鍙峰鐞嗙壒瀹氭笭閬撶殑鍙傛暟
+// order.goodsID = @"productlist.name";
+// }
+ int error = [[SMPCQuickSDK defaultInstance] payOrderInfo:order
+ roleInfo:role];
+ if (error!=0)
+ NSLog(@"%d", error);
+ }
+ break;
+ case U2S_BatteryListenStart:
+ if(_thread == NULL)
+ {
+ _thread = [[NSThread alloc] initWithTarget:self selector:@selector(BatteryThread) object:nil];
+ [_thread setName:@"BatteryCheck"];
+ }
+ if(![_thread isExecuting])
+ {
+ [_thread start];
+ }
+ break;
+ case U2S_BatteryListenStop:
+ break;
+ }
+}
+@end
+
+extern "C" void native_opus_init(int frequency, int bitRate, int bandMode)
+{
+ s_frequency = frequency;
+ s_bandMode = bandMode;
+ s_bitRate = bitRate;
+ s_frameSize = frequency / 100;
+}
+
+extern "C" int native_opus_encode(opus_int16 *pcm, int len, unsigned char *opus)
+{
+ int errorCode = 0;
+ opus_int32 skip = 0;
+ OpusEncoder *enc = opus_encoder_create(s_frequency, CHANNEL_NUM, OPUS_APPLICATION_VOIP, &errorCode);
+ if (OPUS_OK != errorCode) {
+ enc = NULL;
+ return -1;
+ }
+
+ opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(s_bandMode));
+ opus_encoder_ctl(enc, OPUS_SET_BITRATE(s_bitRate));
+ opus_encoder_ctl(enc, OPUS_SET_VBR(1));
+ opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
+ opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
+ opus_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_SIGNAL_VOICE));
+ opus_encoder_ctl(enc, OPUS_SET_DTX(0));
+ opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(0));
+ opus_encoder_ctl(enc, OPUS_GET_LOOKAHEAD(&skip));
+ opus_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(16));
+
+ unsigned char *rbytes = opus;
+ opus_int16 *frame = pcm;
+ int totalSize = 0;
+ while (len >= s_frameSize)
+ {
+ opus_int32 length = opus_encode(enc, frame, s_frameSize, rbytes + sizeof(char), s_bitRate);
+ rbytes[0] = length;
+ frame += s_frameSize;
+ rbytes += length + sizeof(char);
+ len -= s_frameSize;
+ totalSize += length;
+ }
+ opus_encoder_destroy(enc);
+ return totalSize;
+}
+
+extern "C" int native_opus_decode(unsigned char *opus, int len, short *pcm)
+{
+ int err = 0;
+ //opus_int32 skip = 0;
+
+ OpusDecoder *dec = opus_decoder_create(s_frequency, CHANNEL_NUM, &err);
+ if (err != OPUS_OK) {
+ dec = NULL;
+ return -1;
+ }
+
+ while (len > 0)
+ {
+ int frame_opus_length = opus[0];
+ int length = opus_decode(dec, opus + sizeof(char), frame_opus_length, pcm, s_frameSize, 0);
+ opus += sizeof(char) + frame_opus_length;
+ pcm += s_frameSize;
+ len = len - frame_opus_length - sizeof(char);
+ }
+ opus_decoder_destroy(dec);
+ return 0;
+}
diff --git a/SdkProject/channel/qkbt3game/AndroidManifest.xml b/SdkProject/channel/qkbt3game/AndroidManifest.xml
new file mode 100644
index 0000000..cd1ba66
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.secondworld.sdk">
+
+ <uses-permission android:name="android.permission.GET_TASKS" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+
+ <application
+ android:name=".BtGameApp"
+ android:allowBackup="true"
+ android:usesCleartextTraffic="true"
+ tools:replace="android:name">
+
+ <meta-data
+ android:name="unityplayer.ForwardNativeEventsToDalvik"
+ android:value="true" />
+
+ <activity
+ android:name="com.secondworld.sdk.SplashActivity"
+ android:screenOrientation="sensorLandscape">
+ </activity>
+
+ <provider
+ android:name="androidx.core.content.FileProvider"
+ android:authorities="quicksdk_packName.Provider"
+ android:exported="false"
+ android:grantUriPermissions="true">
+ <meta-data
+ android:name="android.support.FILE_PROVIDER_PATHS"
+ android:resource="@xml/filepaths" />
+ </provider>
+
+
+ </application>
+
+</manifest>
\ No newline at end of file
diff --git a/SdkProject/channel/qkbt3game/build.gradle b/SdkProject/channel/qkbt3game/build.gradle
new file mode 100644
index 0000000..c8f58a8
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/build.gradle
@@ -0,0 +1,4 @@
+//褰撳墠鑴氭湰涓烘笭閬撶殑宸紓鍖栭厤缃�
+dependencies {
+// implementation project(path: ':quick')
+}
\ No newline at end of file
diff --git a/SdkProject/channel/qkbt3game/config.properties b/SdkProject/channel/qkbt3game/config.properties
new file mode 100644
index 0000000..4218897
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/config.properties
@@ -0,0 +1 @@
+PLUGINS=quick
\ No newline at end of file
diff --git a/SdkProject/channel/qkbt3game/deps.gradle b/SdkProject/channel/qkbt3game/deps.gradle
new file mode 100644
index 0000000..124a6b8
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/deps.gradle
@@ -0,0 +1 @@
+//姝よ剼鏈负娓犻亾鐨勭涓夋柟杩滅▼渚濊禆搴撻厤缃紝浼氬鍒跺埌unity涓敤浜庢瀯寤�
\ No newline at end of file
diff --git a/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameApp.java b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameApp.java
new file mode 100644
index 0000000..211d251
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameApp.java
@@ -0,0 +1,21 @@
+package com.secondworld.sdk;
+
+public class BtGameApp extends QuickApp {
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ QuickSdkMgr.I.register("40450025922275820036898902533267","31232581");
+ }
+
+ @Override
+ protected PlatformDiff getPlatform() {
+ return new BtGamePlatform();
+ }
+
+ @Override
+ protected Class<? extends GameActivityProxy> getMainProxy() {
+ return BtGameMain.class;
+ }
+
+}
diff --git a/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameMain.java b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameMain.java
new file mode 100644
index 0000000..68eebcd
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGameMain.java
@@ -0,0 +1,89 @@
+package com.secondworld.sdk;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import androidx.annotation.NonNull;
+import android.view.KeyEvent;
+
+import com.quicksdk.QuickSDK;
+import com.quicksdk.Sdk;
+
+public class BtGameMain extends GameActivityProxy {
+
+ @Override
+ public void onCreate(Activity activity) {
+ super.onCreate(activity);
+ QuickSdkMgr.I.requestPermissions(activity);
+ com.quicksdk.Sdk.getInstance().onCreate(activity);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ com.quicksdk.Sdk.getInstance().onStart(activity);
+ }
+
+ @Override
+ public void onRestart() {
+ super.onRestart();
+ com.quicksdk.Sdk.getInstance().onRestart(activity);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ com.quicksdk.Sdk.getInstance().onResume(activity);
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ com.quicksdk.Sdk.getInstance().onStop(activity);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ com.quicksdk.Sdk.getInstance().onDestroy(activity);
+ }
+
+ @Override
+ public void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ com.quicksdk.Sdk.getInstance().onNewIntent(intent);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ QuickSdkMgr.I.onActivityResult(activity, requestCode);
+ com.quicksdk.Sdk.getInstance().onActivityResult(activity, requestCode, resultCode, data);
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ QuickSdkMgr.I.onRequestPermissionsResult(activity, requestCode, grantResults);
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (QuickSDK.getInstance().isShowExitDialog()) {
+ Sdk.getInstance().exit(activity);
+ } else {
+ // 娓告垙璋冪敤鑷韩鐨勯��鍑哄璇濇锛岀偣鍑荤‘瀹氬悗锛岃皟鐢╭uick鐨別xit鎺ュ彛
+ new AlertDialog.Builder(activity).setTitle("閫�鍑�").setMessage("鏄惁閫�鍑烘父鎴�?").setPositiveButton("纭畾", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface arg0, int arg1) {
+ Sdk.getInstance().exit(activity);
+ }
+ }).setNegativeButton("鍙栨秷", null).show();
+ }
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+}
diff --git a/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGamePlatform.java b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGamePlatform.java
new file mode 100644
index 0000000..e5f881c
--- /dev/null
+++ b/SdkProject/channel/qkbt3game/java/com/secondworld/sdk/BtGamePlatform.java
@@ -0,0 +1,9 @@
+ package com.secondworld.sdk;
+
+public class BtGamePlatform extends PlatformDiff {
+
+ @Override
+ public String platformName() {
+ return "quick";
+ }
+}
diff --git a/SdkProject/gradle.properties b/SdkProject/gradle.properties
index 3479196..482d2a1 100644
--- a/SdkProject/gradle.properties
+++ b/SdkProject/gradle.properties
@@ -18,4 +18,4 @@
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
#褰撳墠鏋勫缓鐨勬笭閬撳悕绉�
-CHANNEL_NAME=gtgame
\ No newline at end of file
+CHANNEL_NAME=qkbt3game
\ No newline at end of file
--
Gitblit v1.8.0