> For the complete documentation index, see [llms.txt](https://cydonia.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cydonia.gitbook.io/doc/cydonia-sdk/ios-integration/ios-sdk-api-doc/1.4-dataanalytics.md).

# 1.4数据分析部分

## 1.4.1 Adjust部分数据分析

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

**说明**

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

**接口**

```
-(void) adjustPlayerEventCalledWithEventToken:(NSString*) eventToken;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK adjustPlayerEventCalledWithEventToken:AdjustEventToken_AccountRegist];
[mCydoniaSDK adjustPlayerEventCalledWithEventToken:AdjustEventToken_TutorialComplete];
[mCydoniaSDK adjustPlayerEventCalledWithEventToken:AdjustEventToken_TwitterShare];
```

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

**说明**

完成充值后需要调用此API

**接口**

```
-(void) adjustPlayerIapEventCalledWithEventToken:(NSString*) eventToken andProductPrice:(NSString*)proiductPrice andCurrency:(NSString*)currency andReceiptId:(NSString*)receiptId;
```

**参数说明**

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

**示例**

```
    [mCydoniaSDK adjustPlayerIapEventCalledWithEventToken:AdjustEventToken_InAppBilling andProductPrice:@"240.0" andCurrency:@"JPY" andReceiptId:@"12344"];
```

## 1.4.2 Cydonia平台数据分析

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

**说明**

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

**调用场景**

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

**接口**

```
[mCydoniaSDK cydoniaPlayerRegistWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666"];
```

**参数说明**

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

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

**说明**

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

调用场景：

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

**接口**

```
-(void) cydoniaPlayerLoginWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerLoginWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666"];
```

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

**说明**

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

**接口**

```
-(void) cydoniaPlayerTutorialBeginWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerTutorialBeginWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666"];
```

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

**说明**

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

**接口**

```
-(void) cydoniaPlayerTutorialCompleteWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerTutorialCompleteWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666"];
```

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

**说明**

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

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

**接口**

```
-(void) cydoniaPlayerLevelUpWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId andReachedLevel:(NSString*)currentLevel;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerLevelUpWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666" andReachedLevel:@"11"];
```

### ~~1.4.2.5 玩家过关数据传递(废弃)~~

~~**说明**~~

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

~~**接口**~~

```
-(void) cydoniaPlayerCompleteStageWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId andCompleteStage:(NSString*)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~~

~~**接口**~~

```
-(void) cydoniaPlayerVCurrencyInWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId andVCurrencyName:(NSString*)vCurrencyName andVCurrencyVal:(NSString*)vCurrencyVal andVCurrencyType:(NSString*)vCurrencyType andVCurrencyInMethod:(NSString*)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 cydoniaPlayerVCurrencyInWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666" andVCurrencyName:@"diamond" andVCurrencyVal:@"100" andVCurrencyType:@"1" andVCurrencyInMethod:@"3"];
```

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

~~**说明**~~

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

**接口**

```
-(void) cydoniaPlayerVCurrencyOutWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId andVCurrencyName:(NSString*)vCurrencyName andVCurrencyVal:(NSString*)vCurrencyVal andVCurrencyType:(NSString*)vCurrencyType andPaidItemCategory:(NSString*)paidItemCategory andPaidItemName:(NSString*)paidItemName;
```

**参数说明**

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

**示例**

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

```
[mCydoniaSDK cydoniaPlayerVCurrencyOutWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666" andVCurrencyName:@"diamond" andVCurrencyVal:@"50" andVCurrencyType:@"2" andPaidItemCategory:@"1" andPaidItemName:@"item2"];
```

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

**说明**

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

**接口**

```
-(void) cydoniaPlayerBillingWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId  andGameUserRoleId:(NSString*)gameUserRoleId andProductId:(NSString*)productId andProductPrice:(NSString*)proiductPrice andCurrency:(NSString*)currency andReceiptId:(NSString*)receiptId andGameUserLevel:(NSString*)gameUserLevel;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerBillingWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666" andProductId:@"com.cydonia.item1" andProductPrice:@"240" andCurrency:@"JPY" andReceiptId:@"aaaaaa"];
```

iOS md5算法如下：

```
#pragma mark md5加密算法
- (NSString *)md5HexDigest:(NSString *)knownStr
{
    const char *original_str = [knownStr UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(original_str, (CC_LONG)strlen(original_str), result);
    NSMutableString *hash = [NSMutableString string];
    for (int i = 0; i < 16; i++)
        [hash appendFormat:@"%02X", result[i]];
    return [hash lowercaseString];
}
```

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

**说明**

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

**接口**

```
-(void) cydoniaPlayerHeartBeatWithAppVersion:(NSString*)currentAppVersion andGameServerId:(NSString*)gameServerId andGameUserId:(NSString*)gameUserId andGameUserRoleId:(NSString*)gameUserRoleId;
```

**参数说明**

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

**示例**

```
[mCydoniaSDK cydoniaPlayerHeartBeatWithAppVersion:@"1.0.0.1" andGameServerId:@"1" andGameUserId:@"123456" andGameUserRoleId:@"6666"];
```
