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

游众SDK-lua(Android)接入文档

1 开发前准备

1.1 拷贝资源

1、将"网游\sdk\lua"目录下frameworks\runtime-src\proj.android中的libs文件夹拷贝到对应目录中。

2、将网游\sdk\lua\src”目录下YZLuaInterface.lua文件拷贝到对应目录中。

1.2 配置appIdappKey

可参考“ 网游\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>

1.3 修改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"/>

1.4 增加闪屏Activity

继承com.iyouzhong.yzonlinesdk.YZSplashActivity并将该 Activity设置为程序启动时的 Activity

 
public class MySplashActivity extends YZSplashActivity{
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	// 闪屏结束后的操作
	@Override
	public void endOfSplash() {
		// 闪屏结束结束,进入游戏
		Intent intent = new Intent(this, Zhensg.class);
		startActivity(intent);
		this.finish();
	}
	
	// 返回闪屏的背景颜色
	public int getBackgroundColor() {
		return Color.BLACK;
	}
} 

AndroidManifest.xml中关于该Activity的声明,要声明为启动Activity


<activity
    android:name="com.iyouzhong.zhensg.MySplashActivity"
    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>

1.5 添加SDK需要的use-permision

在游戏的 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" />

1.6 SDK 避免模糊,防止计费时发生异常。

两种方式建议使用第二种方式:

1. proguard-project.txt 文件中增加如下代码:

 -keep class com.iyouzhong.**(*;) 

2. android\sdk\tools\proguard\proguard-android.txt 文件中增加:

 -keep class com.iyouzhong.**(*;) 

2 接口说明

2.1 SDK初始化接口(必选接口)

一、Java部分

如下方法在游戏主 Activity 中调用。


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);

二、Lua部分

 -- 当前平台
CC_TARGET_PLATFORM = cc.Application:getInstance():getTargetPlatform()

if (cc.PLATFORM_OS_ANDROID == CC_TARGET_PLATFORM) then
    -- 初始化lua游众SDK接口
    -- 全局变量
    cc.exports.gaSDK = require "YZLuaInterface"
end 

2.2 登录接口(必选接口)

 -- 设置登录回调
gaSDK:setLoginCallback(loginCallback)
--调用登录接口
gaSDK:login()

-- 登录回调
local function loginCallback(jParama)
    print("yz loginCallback ", jParama)
    local data = json.decode(jParama);
    if data["result"] == "success" then--登录成功
        --登陆成功之后需要去服务器验证登录是否成功
        loginCheck(data)
    elseif data["result"] == "fail" then--登录失败

    elseif data["result"] == "logout" then--登出回调

    end
end 

2.3 设置角色基本数据(必选接口)

 function YZLuaInterface:setRoleData(roleId, roleName, roleLevel, zoneId, zoneName) 

 

部分渠道如 UC 渠道,要对游戏人物数据进行统计,而且为接入规范,

所以为必选接口

调用时间:在游戏登录验证成功后

参数描述:

参数名称 类型 注释
context Context 上下文Activity
roleId String 角色唯一标识
roleName String 角色名
roleLevel String 角色的等级
zoneId String 角色所在区服的唯一标识
zoneName String 角色所在区服名称

 

调用示例:

 --设置角色,必须设置,有些SDK不设置会导致购买失败 gaSDK:setRoleData("1", "角色名", "100", "1", "游戏一区") 

2.4 登出接口

 -- 调用登出接口 gaSDK:logout() 

2.5 退出接口(必选接口)

 -- 设置退出回调
gaSDK:setExitCallback(exitCallback)
-- 调用退出接口
gaSDK:exit() 

--退出回调
local function exitCallback(jPrama)
    require "json"
    local data = json.decode(jPrama);   
if data["event"] == "onExit" then--退出游戏

    elseif data["event"] == "onNoExiterProvide" then--使用游戏本身的退出界面
        --使用游戏自己的退出

    end
end 

2.6 支付接口(必选接口)

 local price = 100
local productName = "100金币"
local productDesc = "100金币"
local payCallbackUrl = "http://www.uzone8.com/"
local orderId = "201602161213456"
local uid = "112233" -- 登录校验返回的uid
local customeParam = "customeParam"
gaSDK:pay(price,productName, productDesc, payCallbackUrl, orderId, uid, customeParam) 

参数描述:

参数名称 类型 注释
price String 游戏道具价格,必须为整数(单位:元)
productName String 商品名称
productDesc String 商品描述
orderId String cp订单号
uid String 账号id,登录校验接口返回
payCallbackUrl String 支付回调地址
customeParam String 自定义参数

2.7 渠道扩展参数接口

 function YZLuaInterface:setData(key, value) 

 

该接口用于设置一些特殊渠道的参数,需要在支付接口之前调用,如:酷派渠道支付接口需要传递登录校验接口返回的extra参数。

设置酷派渠道扩展参数示例:

 gaSDKsetData("EXTRA", extra); 

3.注意事项

3.1 获取uid

user.getUid(),此接口可能获取不到用户uid,请以服务端获取的uid作为唯一标识。

3.2 酷派SDK支付说明

1.          定义一个变量记录extra

 private String extra; 

2.         登录校验后,获取服务端返回的extra

 HttpResponse response = client.execute(post);
	if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
	{
		HttpEntity entity = response.getEntity();
		if (entity == null) 
		{
			return;
		}
		final String responseStr = EntityUtils.toString(entity, HTTP.UTF_8);
		final JSONObject resultJson = new JSONObject(responseStr);
		// 返回码
		int err_code = resultJson.optInt("return_code", 999);
		final String returnData = resultJson.toString();
		if (err_code == 0)
		{
			// 校验成功。do something 
			// extra
			JSONObject data = resultJson.optJSONObject("data");
			extra =
			data.optString("extra");
		}
	} 

3.      调用支付接口时传extra参数

 
YZPayParams params = new YZPayParams();			
params.setParam(YZPayParams.EXTRA, extra);
params.setParam(YZPayParams.Money, money);
params.setParam(YZPayParams.Order_Id, orderId);
params.setParam(YZPayParams.Product_Name, productName);
params.setParam(YZPayParams.Product_Desc, productName);
params.setParam(YZPayParams.Server_Id, serverId);
params.setParam(YZPayParams.Pay_CallbackUrl, payCallbackUrl);
YZOnlineSdk.pay(params); 

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

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

Return Top