接入前,请确保已下载并集成最新版本 Android、iOS、Unity资源
说明:在第一个场景添加永不销毁的预设体,绑定 SuperSDKGObject.cs,然后在 SDKCallBack.cs 里添加各个回调游戏的处理逻辑;对于功能接口的调用,通过引用 SuperSDK.cs,使用 SuperSDK.getInstance().Invoke 方法进行调用。
注意一:游戏也可以将 SuperSDKGObject.cs 脚本挂载到自己永不销毁的 gameObject 上。
注意二:SuperSDK For Unity 内部依赖于 LitJson 库,若游戏本身已经引入,则无需引入。
注意三:在需要接收回调的场景(Scene)里,添加该 prefab 或设置该 prefab 在场景切换时不被销毁,否则接收不到回调事件。
说明:添加 android:name=“com.supersdk.openapi.SuperSdkApplication” 至 application 节点,并在 application 节点下添加相应配置:
<application
android:allowBackup="true"
android:label="SuperSDKDemo"
# 添加下面这个值即可
android:name="com.supersdk.openapi.SuperSdkApplication" >
# 添加相应配置
<meta-data
android:name="sp_version"
android:value="4.0.6" >
</meta-data>
<activity
android:name="com.supersdk.demo.platform.sdk.PluginLoginActivity"
android:screenOrientation="sensor"
android:theme="@android:style/Theme.Dialog" />
</application >
添加相应的权限:
<!-- 统计所需权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
import com.yz.unity.YzSDK;
import com.supersdk.openapi.SuperSDK;
说明:在 Xcode -> Target -> Build Phrases ->Link Binary With Libraries 中添加以下依赖库:
注意:将AdSupport.framework的status改为optional。
Foundation.framework
UIKit.framework
AdSupport.framework
SystemConfiguration.framework
CoreTelephony.framework
libc++.tbd
libsqlite3.tbd
libxml2.2.tbd
libresolv.9.tbd
libz.tbd
说明:在工程配置里面,找到 Linking 部分,修改 Other Linker Flags,添加 -ObjC。
#import "SuperSdkWrapper.h"
说明:从打包工具下载母包配置,并添加(替换)到 assets 目录下,如下图所示:
接口描述:调用此接口会初始化 SuperSDK 各模块,iOS 和 Android 端调用,初始化结果会返回到 Unity 端注册的回调事件。
注意一:Android 初始化接口,必须在 onCreate 里面同步调用,否则会影响部分渠道的登录、支付功能。
注意二:iOS 初始化接口,必须在 didFinishLaunchingWithOptions 里面调用。
注意三:初始化接口做了特殊处理,如果初始化结束时,Unity 端回调还未注册,Android 和 iOS 端会等待回调注册完毕再回调,游戏无需担心。
接口调用:
// Unity 端初始化接口,在游戏永不销毁的预设体 start 生命周期调用
SuperSDK.getInstance().Init(this.gameObject.name,new SuperSDK_CallBack()); // SuperSDK_CallBack类需实现ICallBackManager接口
// Android 初始化接口,放在 java 端调用,必须在 onCreate 里面同步调用
YzSDK.init(this)
// iOS 初始化接口,放在 iOS 端调用,必须在 didFinishLaunchingWithOptions 里面调用
[SuperSdkWrapper init];
/// <summary>
/// 基础CallBack接口
/// </summary>
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
{
//初始化失败,必须重启游戏
}
}
}
}
日志打印:
moduleName:platform
funcName:init
result:
{
"code":1,
"msg":"没有更新接口"
}
接口描述:生命周期接口务必在游戏主 activity 的对应方法中同步调用
@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();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
SuperSDK.lifecycle.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
如下表所示:
字符串常量 | 实际字符串 | 描述 |
---|---|---|
平台模块常量 | ||
SuperSDKPlatform.MODULE_NAME | platform | 模块名称,每个模块常量名固定 |
SuperSDKPlatform.FUNC_SHOW_LOGO | showLog | 是否显示闪屏 |
SuperSDKPlatform.FUNC_INIT | init | 初始化 |
SuperSDKPlatform.FUNC_LOGIN | login | 登录 |
SuperSDKPlatform.FUNC_HAS_LOGOUT | hasLogout | 渠道是否有注销接口 |
SuperSDKPlatform.FUNC_LOGOUT | logout | 注销 |
SuperSDKPlatform.FUNC_PAY | pay | 支付 |
SuperSDKPlatform.FUNC_PAY_ORDER_ID | payOrderId | 支付获取订单成功 |
SuperSDKPlatform.FUNC_EXIT | exit | 退出游戏 |
SuperSDKPlatform.FUNC_ENTER_GAME | enterGame | 进入游戏 |
SuperSDKPlatform.FUNC_CREATE_ROLE | createRole | 创建角色 |
SuperSDKPlatform.FUNC_LEVEL_UP | levelUp | 角色升级 |
SuperSDKPlatform.FUNC_HAS_FORUM | hasForum | 判断是否有论坛 |
SuperSDKPlatform.FUNC_OPEN_FORUM | openForum | 打开论坛 |
SuperSDKPlatform.FUNC_HAS_USER_CENTER | hasUserCenter | 判断是否有用户中心 |
SuperSDKPlatform.FUNC_OPEN_USER_CENTER | openUserCenter | 打开用户中心 |
SuperSDKPlatform.FUNC_HAS_CUSOMER_SERVICE | hasCustomerService | 判断是否有客服 |
SuperSDKPlatform.FUNC_OPEN_CUSOMER_SERVICE | openCustomerService | 打开客服 |
SuperSDKPlatform.FUNC_OPEN_LOGIN_PAGE | openLoginPage | 进入登录页面 |
SuperSDKPlatform.FUNC_OPEN_HOME_PAGE | openHomePage | 进入游戏首页 |
SuperSDKPlatform.FUNC_HAS_GUEST | hasGuest | 用户是否为游客 |
SuperSDKPlatform.FUNC_GUEST_UPGRADE | guestUpgrade | 游客升级 |
SuperSDKPlatform.FUNC_OTHER_FUNCTION | otherFunction | 扩展接口 other |
统计模块常量 | ||
SuperSDKStats.MODULE_NAME | stats | 模块名称 |
SuperSDKStats.FUNC_REPORT | report | 统计上报 |
工具模块常量 | ||
SuperSDKTools.MODULE_NAME | tools | 模块名称 |
SuperSDKTools.FUNC_GET_IPINFO | getClientIPInfo | 获取客户端IP信息,如 ip 地区 |
SuperSDKTools.FUNC_GET_LANGUAGE | getLanguage | 获取本地系统语言 |
SuperSDKTools.FUNC_GET_COUNTRY | getCountry | 获取本地国家地区 |
SuperSDKTools.FUNC_COPY_TOCLIPBOARD | copyToClipboard | 复制文字到剪切板 |
SuperSDKTools.FUNC_ALERT | alert | 弹窗 |
SuperSDKTools.FUNC_GET_PACKAGE_NAME | getPackageName | 获取应用包名 |
SuperSDKTools.FUNC_GET_VERSION_NAME | getVersionName | 获取 AndroidManifest 下 versionName |
SuperSDKTools.FUNC_GET_VERSION_CODE | getVersionCode | 获取 AndroidManifest 下 versionCode |
SuperSDKTools.FUNC_GET_META_DATA | getMetaData | 获取 AndroidManifest 下 meta-data 的 value 值 |
SuperSDKTools.FUNC_SET_SCREEN_LIGHT | setScreenLight | 调节屏幕亮度 |
SuperSDKTools.FUNC_SAVE_DATA | saveData | 保存数据 |
SuperSDKTools.FUNC_GET_DATA | getData | 获取保存的数据 |
SuperSDKTools.FUNC_GET_DEVICE_ID | getDeviceId | 获取设备 ID |
配置模块常量 | ||
SuperSDKConfig.MODULE_NAME | config | 模块名称 |
SuperSDKConfig.FUNC_GET_VALUE | getValue | 获取配置信息 |
广告模块常量 | ||
SuperSDKAdVert.MODULE_NAME | advert | 模块名称 |
SuperSDKAdVert.FUNC_TRACK | track | 激活广告 |
游族模块常量 | ||
SuperSDKForYZ.MODULE_NAME | youzu | 模块名称 |
SuperSDKForYZ.FUNC_GET_VALUE | getValue | 获取配置,包括 opId、opGameId |