文档中心  >  游众SDK  >  客户端接入说明  >  Unity接口(Android)
游众

游众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.xmlApplication如下:


<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.添加启动闪屏ActivityUnity3d游戏入口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没提供退出方法时的回调

退出游戏回调示例:

Copyright © 2012-2018 www.uzone8.com All right reserved.

广州游众网络有限公司版权所有

Return Top