# 1.4 数据分析部分

## 1.4.1 Adjust部分数据分析

### 1.4.1.1 普通事件数据传递

**说明**

PM会在Adjust后台提前定义好事件，Demo中会有完整的事件Token,针对不同的事件需要调用不同的eventToken。

**接口**

```
public void adjustPlayerEventCalledWithEventToken(String eventToken)
```

**参数说明**

* eventToken：Adjust后台定义好的事件Token

**示例**

```
mCydoniaSDK.adjustPlayerEventCalledWithEventToken(AdjustEventToken_AccountRegist);
mCydoniaSDK.adjustPlayerEventCalledWithEventToken(AdjustEventToken_TutorialComplete);
```

### 1.4.1.2 充值事件数据传递

**说明**

完成充值后需要调用此API

**接口**

```
public void adjustPlayerIapEventCalledWithEventTokenAndProductPriceAndCurrencyAndReceiptId(String eventToken, String productPrice, String currency,String receiptId)
```

**参数说明**

* eventToken：Adjust后台定义好的事件Token
* proiductPrice：商品价格
* currency：货币种类，一般“JPY”
* receiptId：收据ID

**示例**

```
mCydoniaSDK.adjustPlayerIapEventCalledWithEventTokenAndProductPriceAndCurrencyAndReceiptId(AdjustEventToken_InAppBilling,"240","JPY","aaaaareceiptId");
```

## 1.4.2 Cydonia平台数据分析

#### 1.4.2.0新用户注册数据埋点(2019-07-02追加)

**说明**

1. 此埋点记录新用户注册，新用户注册完成时调用一次。
2. 另外，一般默认玩家注册完成后初始等级是1级，游戏还需调用一次 玩家升级数据埋点，否则统计数据看不到1级玩家

**调用场景**

1. 新用户注册完成后调用一次

**接口**

```
public void cydoniaPlayerRegist(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID

### 1.4.2.1 登录完成数据传递

**说明**

此API记录玩家登陆信息用来统计活跃用户和活跃设备。

调用场景：

1. 玩家登录完成时调用
2. 游戏打开后只要完成初始化也调用一次（打开游戏就算活跃）

**接口**

```
public void cydoniaPlayerLogin(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID

**示例**

```
mCydoniaSDK.cydoniaPlayerLogin("1.1.23","s1","1234567890","872334");
```

### 1.4.2.**2 新手教学开始数据传递**

**说明**

玩家开始新手教学时调用此接口

**接口**

```
public void cydoniaPlayerTutorialBegin(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID

**示例**

```
mCydoniaSDK.cydoniaPlayerTutorialBegin("1.1.23","s1","1234567890","872334");
```

### 1.4.2.3 新手教学完成数据传递

**说明**

玩家新手教学完成之后调用此接口

**接口**

```
public void cydoniaPlayerTutorialComplete(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID

**示例**

```
mCydoniaSDK.cydoniaPlayerTutorialComplete("1.1.23","s1","1234567890","872334");
```

### 1.4.2.4 玩家升级数据传递

**说明**

玩家等级提升时调用此API。

\*\*\*一般默认玩家初始等级是1级，在玩家注册完成时，需要调用此接口将初始等级传递到服务器，否则统计数据没有初始等级。

**接口**

```
public void cydoniaPlayerLevelup(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId, String currentLevel)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID
* currentLevel：当前玩家的等级

**示例**

```
mCydoniaSDK.cydoniaPlayerLevelup("1.1.23","s1","1234567890","872334","10");
```

### ~~1.4.2.5 玩家过关数据传递（废弃）~~

~~**说明**~~

~~玩家PVE过关之后调用此API~~

~~**接口**~~

```
public void cydoniaPlayerStage(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId, String currentStage)
```

~~**参数说明**~~

* ~~currentAppVersion：当前客户端版本号~~
* ~~gameServerId：当前玩家所在服务器ID~~
* ~~gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）~~
* ~~gameUserRoleId：当前玩家进入服务器的角色ID~~
* ~~currentStage：玩家的过的当前关卡。关卡ID必须唯一。如果PVE分第几章和第几节等，每一节ID需要全章唯一。例如，完成了第1章第12节的Stage设定为"112",完成了第11章第2节的Stage需要设定为"1102"，一般关卡ID=章ID\*100+节ID~~

~~**示例**~~

### ~~1.4.2.6 **玩家**获得虚拟第一货币数据传递（废弃）~~

~~**说明**~~

~~玩家每次获得了游戏第一资源的时候调用此API~~

~~**接口**~~

```
public void cydoniaPlayerVCurrencyIn(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId, String vCurrencyName, String vCurrencyVal, String vCurrencyType, String vCurrencyInMethod)
```

**参数说明**

* ~~currentAppVersion：当前客户端版本号~~
* ~~gameServerId：当前玩家所在服务器ID~~
* ~~gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）~~
* ~~gameUserRoleId：当前玩家进入服务器的角色ID~~
* ~~VCurrencyName：传入玩家获取的虚拟货币名称，比如diamond等等~~
* ~~VCurrencyVal：传入玩家获取的虚拟货币数量~~
* ~~VCurrencyType：虚拟货币类型 1:用钱购买的资源 2：免费获取的资源~~
* ~~VCurrencyInMethod：1.氪金获得 2.活动获得 3.系统赠送 4.任务完成获得 5.使用兑换码获得, 如果有其他方式请联系程序~~

**示例**

```
/*
     VCurrencyName  传入玩家获取的资源名称
     VCurrencyVal 传入玩家获取的资源数量，比如钻石，元宝等等
     VCurrencyType 虚拟货币类型 1:用钱购买的资源 2：免费获取的资源
     VCurrencyInMethod 1.氪金获得 2.活动获得 3.系统赠送 4.任务完成获得 5.使用兑换码获得, 如果有其他方式请联系程序
     */
    mCydoniaSDK.cydoniaPlayerVCurrencyIn("1.1.23","s1","1234567890","872334","diamond","300","1","1");
```

### ~~1.4.2.7 玩家消耗虚拟第一货币数据传递（废弃）~~

~~**说明**~~

~~玩家每次消耗游戏第一资源的时候调用此API。优先消耗免费虚拟货币。~~

~~**接口**~~

```
public void cydoniaPlayerVCurrencyOut(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId, String vCurrencyName, String vCurrencyVal,  String vCurrencyType, String paidItemCategory, String paidItemName)
```

~~**参数说明**~~

* ~~currentAppVersion：当前客户端版本号~~
* ~~gameServerId：当前玩家所在服务器ID~~
* ~~gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）~~
* ~~gameUserRoleId：当前玩家进入服务器的角色ID~~
* ~~VCurrencyName：传入玩家消耗的虚拟货币名称，比如diamond等等~~
* ~~VCurrencyVal：传入玩家消耗的虚拟货币数量~~
* ~~VCurrencyType：消耗的虚拟货币类型 1:用钱购买的 2：免费获取的~~
* ~~VCurrencyPaidItemCategor&#x79;**：**&#x82B1;费在哪些类型 1.道具 2.抽奖 3.建筑加速 4.购买基础资源, 如果有其他方式请联系程序，统计要用~~
* ~~VCurrencyPaidItemName：花费在该类型下的具体哪个道具/哪个卡池/哪个建筑/哪种资源~~

~~**示例**~~\
~~例如：玩家在游戏中的钻石有1000，购买获得的是400，通过游戏免费获得的是600。要购买道具消耗700钻石的时候消耗的是600免费钻石加上100充值钻石。优先消耗免费获得的钻石。~~

```
mCydoniaSDK.cydoniaPlayerVCurrencyOut("1.1.23","s1","1234567890","872334","diamond","200","1","1","1012");
```

### 1.4.2.8 玩家完成充值数据传递

**说明**

玩家完成了充值时调用此API

**接口**

```
public void cydoniaPlayerBilling(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId, String productId, Long proiductPrice, String currency, String receiptId, String gameUserLevel)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID
* productId：玩家购入的内购商品ID
* productPrice：玩家购入的内购商品价格
* currency：货币种类，一般"JPY"
* receiptId：收据ID(Android使用充值返回数据中的GoogleOrderId, iOS使用MD5(iOS返回的收据))
* gameUserLevel: 充值时玩家等级

**示例**

```
mCydoniaSDK.cydoniaPlayerBilling("1.1.23","s1","1234567890","872334","com.cydonia.sdk.item1",200L,"JPY","GPA1234-4312","2");
```

### 1.4.2.9 玩家持续在线1分钟数据传递

**说明**

客户端在前台每一分钟调用一次此API

**接口**

```
public void cydoniaPlayerHeartBeat(String currentAppVersion, String gameServerId, String gameUserId, String gameUserRoleId)
```

**参数说明**

* currentAppVersion：当前客户端版本号
* gameServerId：当前玩家所在服务器ID
* gameUserId：当前游戏服务器生成的玩家总ID（与SDK生成的玩家ID应该是一对一关系）
* gameUserRoleId：当前玩家进入服务器的角色ID

**示例**

```
mCydoniaSDK.cydoniaPlayerHeartBeat("1.1.23","s1","1234567890","872334");
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cydonia.gitbook.io/doc/cydonia-sdk/android-integration/android-sdk-api-doc/1.4-dataanalytics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
