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

游众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 配置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.4 修改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.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初始化接口,在游戏主ActivityonCreate 中调用

 
//在游戏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); 

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

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

Return Top