游众SDK-lua(Android)接入文档
1 开发前准备
1.1 拷贝资源
1、将"网游\sdk\lua"目录下frameworks\runtime-src\proj.android中的libs文件夹拷贝到对应目录中。
2、将”网游\sdk\lua\src”目录下YZLuaInterface.lua文件拷贝到对应目录中。
1.2 配置appId和appKey
可参考“ 网游\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.xml的Application如下:
<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);