游众SDK-Unity(Android)接入文档
1 开发前准备
可参考“ \demo\u3d\game ”目录下的Demo
1.将sdk\u3d目录下文件拷贝到Assets\Plugins\Android目录下;
2.修改AndroidManifest文件:
(1) 在游戏AndroidManifest.xml文件的application中添加游众提供的如下代码,
可参考“网游/sdk/AndroidManifest.xml”
<meta-data
android:name="YZGAME_APPID"
android:value="你的appId" >
</meta-data>
<meta-data
android:name="YZGAME_APPKEY"
android:value="你的appKey >
</meta-data>
(2) 修改Application
1) 若无自定义Applicatiion,则修改AndroidManifest.xml的Application如下:
<application android:name="com.iyouzhong.yzonlinesdk.YZGameApplication">
2) 若开发者自定义的Application。 则自定义Application需要继承
com.iyouzhong.yzonlinesdk.YZGameApplication
AndroidManifest.xml修改如下:
<application android:name="自定义Application"/>
(3) 在游戏的AndroidManifest.xml中添加use-permision如下,
可参考“网游/sdk/AndroidManifest.xml”
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
3.添加启动闪屏Activity和Unity3d游戏入口Activity
(1) Eclipse中建立一个与unity3d工程同包名工程,引入yzonlinesdk.jar;
(2) 新建一个闪屏 activity 例如 SplashActivity,继承
com.iyouzhong.yzonlinesdk.YZSplashActivity; (同 2.2.1.5 部分);
(3) 新建一个游戏入口activity例如 MainActivity 继承 Unity3D 的
UnityPlayerActivity 类;
(4) 将工程 properties 的 android 选项中 Is Library 选中,如下图
(5) 将工程bin目录下生成的jar拷贝至unity工程Assets\Plugins\Android\bin文件 夹下;
(6) 将 Assets\Plugins\Android\AndroidManifest.xml中的主入口Activity配置为
SplashActivity。例如:
<activity
android:name="com.iyouzhong.uzgamesdk.unity.demo.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
(7)在Assets\Plugins\Android\AndroidManifest.xml中声明游戏的入口MainActivity,
如下:
<activity android:name="com.iyouzhong.uzgamesdk.unity.demo.MainActivity" >
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
2 接口说明
2.1 SDK初始化及Activity生命周期接口(必选接口)
本节方法在游戏入口Activity中调用,例如上述的MainActivity。
1. public static void onCreate(Activity context)
该方法用于需要在游戏主 Activity 中的 onCreate 中调用,
注意: 只需调用一次
调用用例: YZOnlineSdk.onCreate(this);
2. public static void onStart(Activity context)
该方法用于需要在游戏主 Activity 中的 onStart 中调用,
调用用例: YZOnlineSdk.onStart(this);
3. public static void onRestart(Activity context)
该方法用于需要在游戏主 Activity 中的 onRestart 中调用,
调用用例: YZOnlineSdk.onRestart(this);
4. public static void onResume(Activity context)
该方法用于需要在游戏主 Activity 中的 onResume 中调用,
调用用例: YZOnlineSdk.onResume(this);
5. public static void onPause(Activity context)
该方法用于需要在游戏主 Activity 中的 onPause 中调用,
调用用例: YZOnlineSdk.onPause(this);
6. public static void onStop(Activity context)
该方法用于需要在游戏主 Activity 中的 onStop 中调用,
调用用例: YZOnlineSdk.onStop(this);
7. public static void onDestroy(Activity context)
该方法用于需要在游戏主 Activity 中的 onDestroy 中调用,
调用用例: YZOnlineSdk.onDestroy(this);
8. public static void onNewIntent(Intent intent)
该方法用于需要在游戏主 Activity 中的 onNewIntent 中调用,
调用用例: YZOnlineSdk.onNewIntent(intent);
9. public void onActivityResult(int requestCode, int resultCode, Intent data)
该方法用于需要在游戏主 Activity 中的 onNewIntent 中调用,
调用用例: YZOnlineSdk.onNewIntent(intent);
10. public void onWindowFocusChanged(boolean hasFocus)
该方法用于需要在游戏主 Activity 中的 onWindowFocusChanged中调用,
调用用例: YZOnlineSdk.onWindowFocusChanged(hasFocus);
2.2 用户登录登出接口(必选接口)
以下小节所有接口,请在 Unity3D 脚本中使用。
可参考“网游\demo\u3d\game\Android\ButtonEventHandler.cs”
1.在使用SDK接口时,先初始化一个SDK接口类的引用
//在GameObject中定义一个SDK接口类的引用
private AndroidJavaClass helperClass;
//在GameObject初始化的时候初始化SDK接口类的引用
void Start ()
{
helperClass = new
AndroidJavaClass("com.iyouzhong.uzgamesdk.unity.YZOnlineSDKHelper");
}
2.设置登出监听
/**
* 设置登出监听
*
* @param gameObject 支付回调方法所在的GameObject名称
* @param methodName 支付回调方法名称
*/
public static void setLogoutListener(final String gameObject, final String methodName)
调用示例:
helperClass.CallStatic("setLogoutListener", gameObject, methodName);
3.登录
/**
* 登录接口
*
* @param gameObject 支付回调方法所在的GameObject名称
* @param methodName 支付回调方法名称
*/
public static void login(final Activity act, final String gameObject, final String methodName)
调用示例:
helperClass.CallStatic("login", curActivity, "GameObject", "loginCallback");
4.登出
public static void logout(final Activity act)
调用示例:
helperClass.CallStatic("logout", curActivity);
5.切换账号
/**
* 切换账号
*
* @param act
* @param gameObject 支付回调方法所在的GameObject名称
* @param methodName 支付回调方法名称
*/
public static void switchAccount(final Activity act, final String gameObject, final String methodName)
调用示例:
helperClass.CallStatic("switchAccount", curActivity, "GameObject", "loginCallback");
2.3 设置角色基本数据(必选接口)
部分渠道如UC渠道,要对游戏人物数据进行统计,而且为接入规范。
调用时间:在游戏登录验证成功后。
/**
* 设置玩家角色信息
*
* @param act
* @param roleId 角色Id
* @param roleName 角色名称
* @param roleLevel 角色等级
* @param zoneId 区服id
* @param zoneName 区服名称
*/
public static void setRoleData(Activity act, String roleId, String roleName, String roleLevel, String zoneId, String zoneName)
调用示例:
helperClass.CallStatic("setRoleData", curActivity, roleId, roleName, roleLevel, zoneId, zoneName);
2.4 支付接口(必选接口)
1.支付接口
/**
* SDK支付接口
*
* @param act 游戏Activity
* @param price 商品价格(单位:元,整数)
* @param productName 商品名称
* @param productDesc 商品描述
* @param orderId 订单id
* @param uid 登录校验返回的uid
* @param payCallbackUrl 支付回调地址
* @param customeParam 自定义参数
*/
public static void pay(final Activity act,
final int price, final String productName,
final String productDesc, final String orderId,
final String uid, final String payCallbackUrl, final String customeParam)
调用示例:
helperClass.CallStatic("pay", curActivity, 100, "100金币", "购买金币", orderId, "1", payCallbackUrl, "test");
说明:网游的支付结果请以服务器端的同步结果为准,因为某些SDK客户端没有支付结果的回调。
2.支付扩展接口
/**
* 支付扩展接口,用于一些特殊渠道参数的传递,在调用pay接口之前调用,如酷派渠道需要传递后台登陆校验返回的extra参数
*
* @param key
* @param value
*/
public static void payExtend(String key, String value)
调用示例:
helperClass.CallStatic("payExtend", “EXTRA”, extra);
helperClass.CallStatic("pay", curActivity, 100, "100金币", "购买金币", orderId, "1", payCallbackUrl, "test");
2.5 退出接口(必选接口)
/**
* 退出游戏接口
*
* @param act 游戏Activity
* @param gameObject 退出回调方法所在的GameObject名称
* @param methodName 退出回调方法名称
*/
public static void exit(final Activity act, final String gameObject, final String methodName)
当游戏退出前必须调用该方法,进行清理工作。如果游戏直接退出,而不调用该方法,可能会出现未知错误,导致程序崩溃, 一般游戏在按返回键退出时调用此接口。 调用示例:
helperClass.CallStatic("exit", curActivity, "GameObject","exitCallback");
2.6 特殊接口(非必选接口)
/**
* 该方法用于判断SDK是否需要打开游戏声音, 目前只有移动基地需要此接口,游戏开发者需要根据该返回值,设定游戏背景音乐是否开启
*
* @param context
* @return
*/
public static boolean isMusicEnabled(Activity context)
该方法用于判断SDK是否需要打开游戏声音,目前只有移动基地需要此接口,游戏开发者需要根据该返回值,设定游戏背景音乐是否开启,调用示例:
Boolean isOpen = helperClass.CallStatic("isMusicEnabled", curActivity);
2.7 打开论坛和个人中心
/**
* 打开用户中心
*
* @return 如果渠道有提供该接口则返回true,默认返回false
*/
public static boolean openUserCenter()
/**
* 打开论坛
*
* @return 如果渠道有提供该接口则返回true,默认返回false
*/
public static boolean openBBS()
2.8 回调消息定义
回调使用Json方式传递参数,定义如下:
1.登录回调:
回调返回的Json键值定义对应表:
Key | 值类型 | 注释 |
“code” | String | 登录结果码 |
“msg” | String | 登录失败提示,如果登录失败,才有该字段 |
"user" | YZJSONObject | 登录账户信息 |
“code”的值定义如下:
Key | 值类型 | 注释 |
LoginResult.LOGIN_SUCCESS | “1” | 登录成功 |
LoginResult.LOGIN_FAILED | “0” | 登录失败 |
“user”的值定义如下:
Key | 值类型 | 注释 |
"uid" | String | 渠道sdk返回的用户标识 |
"token" | String | 渠道 SDK 登录完成后的 Session ID。特别提醒:部分渠道此参数会包含特殊值如‘ +’,空格之类的,如直接使用 URL 参数传输到游戏服务器请求校验,请使用 URLEncoder 编码。 |
"appId" | String | 游众后台创建的游戏的appid |
"sdkId" | String | 游众内部定义的渠道sdk标识 |
"version" | String | 渠道sdk版本标识 |
"ext" | String | 扩展字段,登录校验需要 |
调用示例:
2.exit回调
名称 | 值 | 注释 |
ExitResult.EXIT | "0" | SDK退出回调 |
ExitResult.EXIT_NO_PROVIDE | "1" | 渠道SDK没提供退出方法时的回调 |
退出游戏回调示例: