游众SDK-C++(Android)接入文档
1 开发前准备
1.1 拷贝资源
SDK 开发资源包: SDK 目录中包含 SDK 的资源文件,请复制 SDK 目录中的所有目录与文件,并拷贝至各自的游戏工程中,如下:
a) 将\sdk\ cocos \ libs 目录下的文件拷贝到游戏对应目录下;
b) 将\sdk\cocos\libs\armabi\libyzonlinesdkadapter.so 拷贝到游戏项目的libs\armabi 目录和 jni 目录下;
c) 将\sdk\cocos\Classes\YZGameNativeInterface.hpp 文件中拷贝到游戏工程中 C++头文件存放位置,如 Cocos2dx 项目放入Classes 目录,并且在使用接口文件中加入 include 引用: #include "YZGameNativeInterface.hpp"。
1.2 添加SDK提供的lib引用
1.3 配置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.4 修改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.5 增加闪屏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.6 添加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.7 SDK 避免模糊,防止计费时发生异常。
两种方式建议使用第二种方式:
1. proguard-project.txt 文件中增加如下代码:
-keep class com.iyouzhong.**(*;)
2. android\sdk\tools\proguard\proguard-android.txt 文件中增加:
-keep class com.iyouzhong.**(*;)
1.8 Android.mk文件修改
修改 android 工程的 jni/Android.mk 文件,添加如下代码(黄色突出代码):
LOCAL_PATH := $(call my-dir)
#add prebuild library
include $(CLEAR_VARS)
LOCAL_MODULE := yzonlinesdkadapter
LOCAL_SRC_FILES := libyzonlinesdkadapter.so
include $(PREBUILT_SHARED_LIBRARY)
#add prebuild library end
include $(CLEAR_VARS)
...
#add shared library
LOCAL_SHARED_LIBRARIES += yzonlinesdkadapter
#add shared library end
2 接口说明
2.1 SDK初始化接口(必选接口)
一、C++初始化接口
添加jni初始化接口,在游戏主Activity的onCreate 中调用
//在游戏activity中调用,防止线程不统一问题。
//cocos 2.0版本没有函数runOnGLThread,需要自行添加类似方法
YZNativeAdapter.init(this, new YZActionCallback() {
@Override
public void callback(Runnable run) {
runOnGLThread(run);
}
});
二、游戏主 Activity 初始化接口
如下方法在游戏主 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);
2.2 登录接口(必选接口)
static void YZGameNativeInterface::login();
该方法用于登陆,调用用例:
YZGameNativeInterface::setLoginCallback(&loginCallback);//设置回调函数
YZGameNativeInterface::login();
2.3 设置角色基本数据(必选接口)
static void YZGameNativeInterface::setRoleData(const char* roleId, const char* roleName, const char* roleLevel, const char* zoneId, const char* zoneName);
部分渠道如 UC 渠道,要对游戏人物数据进行统计,而且为接入规范,
所以为必选接口
调用时间:在游戏登录验证成功后
参数描述:
参数名称 | 类型 | 注释 |
context | Context | 上下文Activity |
roleId | String | 角色唯一标识 |
roleName | String | 角色名 |
roleLevel | String | 角色的等级 |
zoneId | String | 角色所在区服的唯一标识 |
zoneName | String | 角色所在区服名称 |
2.4 登出接口
static void YZGameNativeInterface::logout(const char* params);
该方法用于登出,调用用例:
YZGameNativeInterface::setLoginCallback(loginCallback);//设置回调函数
YZGameNativeInterface::logout();
2.5 退出接口(必选接口)
static void YZGameNativeInterface::exit();
该方法用于退出,在退出游戏时调用,调用用例:
YZGameNativeInterface::setExitCallback(ExitCallback);//设置回调函数
YZGameNativeInterface::exit();
2.6 支付接口(必选接口)
static void YZGameNativeInterface::pay(int price, const char* productName, const char* productDesc , const char* orderId, const char* uid, const char* payCallbackUrl, const char* customeParam);
该接口用于支付。
参数描述:
参数名称 | 类型 | 注释 |
price | String | 游戏道具价格,必须为整数(单位:元) |
productName | String | 商品名称 |
productDesc | String | 商品描述 |
orderId | String | cp订单号 |
uid | String | 账号id,登录校验接口返回 |
payCallbackUrl | String | 支付回调地址 |
customeParam | String | 自定义参数 |
2.7 渠道扩展参数接口
static void YZGameNativeInterface::setData(const char* key, const char* value);
该接口用于设置一些特殊渠道的参数,需要在支付接口之前调用,如:酷派渠道支付接口需要传递登录校验接口返回的extra参数。
设置酷派渠道扩展参数示例:
YZGameNativeInterface::setData(”EXTRA”, extra);
2.8 登录登出回调类
class YZNativeOnlineLoginCallback
{
public:
// 用户调用YZNativeOnlineLoginCallback::logout时,会被调用
virtual void onLogout(const char* remain) = 0;
// 用户调用YZNativeOnlineLoginCallback::login登陆成功时,会被调用
// user为登陆时返回相关参数包含id token sdkId等
virtual void onLoginSuccess(YZNativeOnlineUser* user) = 0;
// 用户调用YZNativeOnlineLoginCallback::login登陆失败时,会被调用
virtual void onLoginFailed(const char* msg) = 0;
};
登陆回调类需要在登陆之前设置,可以只设置一次。设置接口为:
static void YZGameNativeInterface::setLoginCallback(YZNativeOnlineLoginCallback* callback)
2.9 退出回调类
class YZNativeOnlineExitCallback
{
public:
//当渠道不需要弹出渠道退出界面时,此函数会被调用
virtual void onNoExiterProvide() = 0;
//当渠道需要弹出渠道退出界面时,游众SDK调起渠道退出界面,用户确认之后,此函数会被调用
virtual void onExit(bool result) = 0;
};
退出回调类需要在退出之前设置,可以只设置一次。设置接口为:
static void YZGameNativeInterface:: setExitCallback(YZNativeOnlineExitCallback* callback);