# **接入流程**
*****
## **资源引入**
1. 将 libs 目录下 jar包、aar包导入到项目中
2. 将\_x.x.x.x.so 放在游戏的 assets/gc\_plugins/目录下(此目录下只能有一个 so 文件,切勿更改我方提供 so 包的命名)
如有疑问,可参照 demo
## **配置AndroidMainfest**
1. 参数配置
```
<!--appkey-->
<meta-data
android:name="GC_APPKEY"
android:value="" />
<!--渠道id-->
<meta-data
android:name="GC_CPID"
android:value="" />
<!--aeskey-->
<meta-data
android:name="GC_AESKEY"
android:value="" />
<!--环境-->
<meta-data
android:name="GC_ENVIRONMENT"
android:value="1" />
<!--闪屏页-->
<meta-data
android:name="GC_SPLASHPAGE"
android:value="1" />
<!--游戏id-->
<meta-data
android:name="GC_GAMEID"
android:value="" />
<!--平台号-->
<meta-data
android:name="GC_PLATFORM"
android:value="" />
<!--头条appid-->
<meta-data
android:name="TOUTIAO_APPID"
android:value="" />
<!--热云appkey-->
<meta-data
android:name="TRACKINGIO_APPKEY"
android:value="" />
<!--buglyAppid-->
<meta-data
android:name="BUGLY_APPID"
android:value="" />
<meta-data
android:name="android.webkit.WebView.EnableSafeBrowsing"
android:value="false" />
<meta-data
android:name="android.max_aspect"
android:value="2.2" />
~~~
```
2. 权限配置
```
~~~
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
~~~
```
3. activity和service声明
```
<activity
android:name="com.ryg.dynamicload.DLProxyFragmentActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent">
<intent-filter>
<action android:name="com.ryg.dynamicload.proxy.fragmentactivity.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service android:name="com.ryg.dynamicload.DLProxyService" />
```
## **必须调用的API**
Note:所有api都通过GCManager单例类来调用
### **初始化**
该方法必须在游戏启动Activity的onCreate方法中调用
```
GCManager.getInstance().init(this, new GCInitListener() {
@Override
public void onInitSuccess() {
//初始化成功
}
@Override
public void onInitFail() {
//初始化失败
}
@Override
public void onLoginSuccess(String s) {
//登录成功回调
}
@Override
public void onLoginFail(String s) {
//登录失败
}
@Override
public void onLogout() {
//cp需要把游戏账号退出,跳转到登录界面
}
@Override
public void onExit() {
finish();
System.exit(0);
}
});
```
### **页面时长统计**
Note: 目前提供了对每个页面(Activity)停留时长的统计,每个页面的的停留时间是从 onResume 生命周期开始计算,到 onPause 结束。为了完成时长统计,接入方需要在每个 Activity 相应生命 周期方法中调用我们相对应的 API。
在 Activity#onResume()调用
```
GCManager.getInstance().onResume (activity)
```
在 Activity#onPause()调用
```
GCManager.getInstance().onPause(activity)
```
### **登录**
```
GCManager.getInstance().login();
```
### **支付**
```
GCManager.getInstance().recharge(amount,
"倚天剑", "12345678",
"http://mock.youximao.cn/mockjsdata/11/sdk/notify",
"一区张无忌下的订单",
"201712091622",
"testRoleName",
"testRoleServerName","10001",
new GameCatSDKListener() {
@Override
public void onSuccess(JSONObject jsonObject) {
}
@Override
public void onFail(String s) {
}
});
```
| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| amount | double | 金额,最高限额为 99 万, 最低为 1,必须为整数。 (测试时 可输入 0.1) |
| description | String | 商品介绍 |
| codeNo | String | 订单编号(用于对账跟发货凭证,必 须唯一|
| notifyUrl | String | 发货回调地址(通知游戏端发货的地 址) |
|extend | String | 游戏方的透传参数(传 进什么游戏猫都会原数 据返回,建议用 jsonString) |
| roleId | String | 角色ID |
| roleName | String | 玩家角色名称 |
| roleServerName | String | 玩家所在服务器的名称|
| roleServerId | String | 玩家所在服务器的ID |
### **同步角色信息**
在创建角色、进入游戏、昵称修改、角色升级、退出游戏时调用
```
GCManager.getInstance().synRoleInfo("testRoleName", "testRoleServerName", "testRoleCamp", "10", "1111111","10001");
```
| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| roleName | String | 玩家角色名称 |
| roleServerName | String | 玩家所在服务器的名称|
| roleCamp | String | 角色阵营 |
| roleGrade | String | 角色等级 |
| roleId | String | 角色ID |
| roleServerId | String | 玩家所在服务器的ID |
### **退出游戏**
```
GCManager.getInstance().exit();
```
### **生命周期**
接入游戏 Activity 的 OnActivityResult 参数同游戏 activity 的 onActivityResult 方法参数
```
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
GCManager.getInstance().onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
```
接入游戏 Activity的onDestroy参数同游戏 activity 的 onActivityResult 方法参数
```
@Override
protected void onDestroy() {
GCManager.getInstance().onDestroy(this);
super.onDestroy();
}
```
### **bugly接入**
Note:如果游戏中已经接入 bugly,则忽略以下操作,直接添加我们的账号(3227047104、2280031330)到贵方bugly 后台对应这款游戏下即可。
1. 游戏如果没有自己的 Application,需要配置 YXMApplication, android:name="com.ryg.sdk.YXMApplication"
```
<application
android:name="com.ryg.sdk.YXMApplication"
android:allowBackup="true"
android:icon="@drawable/youximao_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
```
2. 游戏有自己的 Application,则需要在游戏 Application 的 onCreate 中调用
```
GCManager.getInstance().initBugly(this);
```