# Preparation before integration (Unity) *** Before integrating, please make sure you have downloaded the latest version of SuperSDK4.0+Demo (Unity version).](http://www.supersdk.cn/download.html)。 # Unity configuration ## Import SuperSDKForUnity.unitypackage ![Screenshot](img/unity/qq图片20160405142114.png) When the Unity project imports the package, the path cannot contain Chinese characters. SuperSDK For Unity internally relies on the LitJson library, and if the game itself has been introduced, there is no need to introduce it. ## Add SuperSDKGObject.perfabe ![Screenshot](img/unity/qq图片20160405142424.png) In the scene that needs to receive the callback, add the Perfabe or set the Perfabe not to be destroyed when the scene is switched, otherwise no callback event will be received. Note: The game developer can also add the SuperSDK_BindCallBack.cs script to a gameObject that it will never destroy. # Android configuration ## Modify AndroidManifest (required) Add android:name="com.supersdk.openapi.SuperSdkApplication" to the application node and add the appropriate configuration under the application node: ```java # 添加相应配置 ``` Add corresponding permissions: ```java ``` ## Import SuperSDK head files ```java import com.yz.unity.YzSDK; import com.supersdk.openapi.SuperSDK; ``` # iOS configuration ## Add SuperSdk version number In the project's info.plist file, add a value to identify the SuperSDK version number. The key is sp_version, and the corresponding value is the version of currently connected SuperSdk.framework. ![Screenshot](img/object-c/sp_version.png) For the version number of SuperSDK.framework, please see the README.txt in downloaded documents. ![Screenshot](img/object-c/查看supersdk.framework版本号3.png) ## Add system dependencies Add dependency libraries in Xcode -> Target -> Build Phrases -> Link Binary WithLibraries: ```object-c Foundation.framework UIKit.framework AdSupport.framework SystemConfiguration.framework CoreTelephony.framework libstdc++.6.tbd libsqlite3.tbd ``` (Note: Change the status of AdSupport.framework to optional) ## Modify the project configuration, add the link parameters of the library In the project configuration, find the Linking section, modify the Other Linker Flags, and add -ObjC. ![Screenshot](img/object-c/添加库的链接参数.png) ## Import SuperSDK head files ```object-c #import "SuperSdkWrapper.h"//接口 ``` # Interface Description ##Add an orginal package configuration file## Download the orginal package configuration from the packaging tool and add (replace) to the assets directory, as shown below ![Screenshot](img/unity/common-mubao.png) ## initialization Interface description: Invoking this interface will initialize each module of SuperSDK, iOS and Android side invoke, the initialization result will return to the callback event registered by Unity. The Android initialization interface must be invoked synchronously in onCreate, otherwise it will affect the login and payment functions of some channels. The iOS initialization interface must be called inside didFinishLaunchingWithOptions. The initialization interface has been specially processed. If the initialization is over, the Unity callback has not been registered yet. Android and iOS will wait for the callback to register and then callback. Game developer does not need to worry. Interface invoke: ```unity //Unity端初始化接口,在游戏永不销毁的预设体start生命周期调用 SuperSDK.getInstance().Init(this.gameObject.name,new SuperSDK_CallBack()); //SuperSDK_CallBack类需实现ICallBackManager接口 ``` ```java //Android 初始化接口,放在java端调用,必须在onCreate里面同步调用 YzSDK.init(this) ``` ```object-c //iOS 初始化接口,放在iOS端调用,必须在didFinishLaunchingWithOptions里面调用 [SuperSdkWrapper init]; ``` ```unity /// /// 基础CallBack接口 /// public void OnCallBack(string moduleName, string funcName, string result) { Debug.Log("moduleName:" + moduleName); Debug.Log("funcName:" + funcName); Debug.Log("result:" + result); JsonData resultData = JsonMapper.ToObject(result); // 平台模块回调 if (moduleName.Equals(SuperSDKPlatform.MODULE_NAME)) { if(funcName.Equals(SuperSDKPlatform.FUNC_INIT)) { if ((int)resultData["code"] == SuperSDKConstants.SUCCESS) { //初始化成功 } else { //初始化失败,必须重启游戏 } } } } ``` Callback log printing: ```unity moduleName:platform funcName:init result: { "code":1, "msg":"没有更新接口" } ``` ## Integrated lifecycle interface Interface description: The lifecycle interface must be called synchronously in the corresponding method of the game's main activity. ```java @Override protected void onStart() { super.onStart(); SuperSDK.lifecycle.onStart(); } protected void onResume() { super.onResume(); SuperSDK.lifecycle.onResume(); }; @Override protected void onPause() { super.onPause(); SuperSDK.lifecycle.onPause(); } @Override protected void onStop() { super.onStop(); SuperSDK.lifecycle.onStop(); } @Override protected void onRestart() { super.onRestart(); SuperSDK.lifecycle.onRestart(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); SuperSDK.lifecycle.onNewIntent(intent); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); SuperSDK.lifecycle.onActivityResult(requestCode, resultCode, data); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); SuperSDK.lifecycle.onSaveInstanceState(outState); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); SuperSDK.lifecycle.onConfigurationChanged(newConfig); } @Override protected void onDestroy() { super.onDestroy(); SuperSDK.lifecycle.onDestroy(); } ``` # Appendix 如下表所示: | **String constant** | **Actual string** | **Description** | | ------------------------------------------ | ------------------- | ---------------------------------------------------- | | **平台模块常量** | | | | **SuperSDKPlatform.MODULE_NAME** | **platform** | **Module name, fixed per module constant name** | | SuperSDKPlatform.FUNC_SHOW_LOGO | showLog | Whether to display a splash screen | | SuperSDKPlatform.FUNC_INIT | init | initialization | | SuperSDKPlatform.FUNC_LOGIN | login | log in | | SuperSDKPlatform.FUNC_HAS_LOGOUT | hasLogout | Whether the channel has a logout interface | | SuperSDKPlatform.FUNC_LOGOUT | logout | Logout | | SuperSDKPlatform.FUNC_PAY | pay | Pay | | SuperSDKPlatform.FUNC_PAY_ORDER_ID | payOrderId | Successfully get pay order ID | | SuperSDKPlatform.FUNC_EXIT | exit | exit the game | | SuperSDKPlatform.FUNC_ENTER_GAME | enterGame | enter the game | | SuperSDKPlatform.FUNC_CREATE_ROLE | createRole | Creating a Role | | SuperSDKPlatform.FUNC_LEVEL_UP | levelUp | Role levelup | | SuperSDKPlatform.FUNC_HAS_FORUM | hasForum | Determine if there is a forum | | SuperSDKPlatform.FUNC_OPEN_FORUM | openForum | Open forum | | SuperSDKPlatform.FUNC_HAS_USER_CENTER | hasUserCenter | Determine if there is a user center | | SuperSDKPlatform.FUNC_OPEN_USER_CENTER | openUserCenter | Open the user center | | SuperSDKPlatform.FUNC_HAS_CUSOMER_SERVICE | hasCustomerService | Determine if there is customer service | | SuperSDKPlatform.FUNC_OPEN_CUSOMER_SERVICE | openCustomerService | Open customer service | | SuperSDKPlatform.FUNC_OPEN_LOGIN_PAGE | openLoginPage | open login page | | SuperSDKPlatform.FUNC_OPEN_HOME_PAGE | openHomePage | open homepage | | SuperSDKPlatform.FUNC_HAS_GUEST | hasGuest | Whether the user is a guest | | SuperSDKPlatform.FUNC_GUEST_UPGRADE | guestUpgrade | guest upgrade | | SuperSDKPlatform.FUNC_OTHER_FUNCTION | otherFunction | Extension interface other | | **Statistical module constant** | | | | **SuperSDKStats.MODULE_NAME** | **stats** | **Module name** | | SuperSDKStats.FUNC_REPORT | report | Statistical reporting | | **Tool module constant** | | | | **SuperSDKTools.MODULE_NAME** | **tools** | **Module name** | | SuperSDKTools.FUNC_GET_IPINFO | getClientIPInfo | Obtain client IP information, such as ip area | | SuperSDKTools.FUNC_GET_LANGUAGE | getLanguage | Get the local system language | | SuperSDKTools.FUNC_GET_COUNTRY | getCountry | Get local country regions | | SuperSDKTools.FUNC_COPY_TOCLIPBOARD | copyToClipboard | Copy text to clipboard | | SuperSDKTools.FUNC_ALERT | alert | alert | | SuperSDKTools.FUNC_GET_PACKAGE_NAME | getPackageName | Get the application package name | | SuperSDKTools.FUNC_GET_VERSION_NAME | getVersionName | Get the versionName under AndroidManifest | | SuperSDKTools.FUNC_GET_VERSION_CODE | getVersionCode | Get the versionCode under AndroidManifest | | SuperSDKTools.FUNC_GET_META_DATA | getMetaData | Get the value of the meta-data under AndroidManifest | | SuperSDKTools.FUNC_SET_SCREEN_LIGHT | setScreenLight | Adjust screen light | | SuperSDKTools.FUNC_SAVE_DATA | saveData | save data | | SuperSDKTools.FUNC_GET_DATA | getData | Get saved data | | SuperSDKTools.FUNC_GET_DEVICE_ID | getDeviceId | Get device ID | | **Configuration module constant** | | | | **SuperSDKConfig.MODULE_NAME** | **config** | **Module name** | | SuperSDKConfig.FUNC_GET_VALUE | getValue | Get configuration information | | **Advertising module constant** | | | | **SuperSDKAdVert.MODULE_NAME** | **advert** | **Module name** | | SuperSDKAdVert.FUNC_TRACK | track | Activate ad | | **Yoozoo module constant** | | | | **SuperSDKForYZ.MODULE_NAME** | **youzu** | **Module name** | | SuperSDKForYZ.FUNC_GET_VALUE | getValue | Get configuration, such as opid, opgameid |