跳到主要内容
版本:v3

服务端接入

你可以直接使用 REST API 进行接入,可以在不依赖 SDK 的情况下直接将数据上报到 TapDB。

上报事件和属性

数据传输的格式和含义请参考 数据规则

如果返回 Response Code 为 200,则代表数据上报成功,请在埋点管理中进一步查看事件的写入情况。

单条上报

POST https://e.tapdb.net/v2/event

Content-Type: application/json

请求内容示例:

{
"client_id": "test_appid",
"device_id": "test_device_id",
"user_id": "test_user_id",
"type": "track",
"name": "#EventName",
"properties": {
"os": "Android",
"device_id1": "000",
"device_id2": "000",
"device_id3": "000",
"device_id4": "000",
"width": 256,
"height": 768,
"device_model": "pixel",
"os_version": "Android 10.0",
"provider": "O2",
"network": "1",
"channel": "Google Play",
"app_version": "1.0",
"sdk_version": "2.8.0",
"#custem_event_property_name": "CustomEventPropertyValue"
}
}

批量上报

POST https://e.tapdb.net/v2/batch

Content-Type: application/json

请求内容示例:

{
"data": [
{
"client_id": "test_appid",
"device_id": "test_device_id",
"user_id": "test_user_id",
"type": "track",
"name": "#EventName",
"properties": {
"os": "Android",
"device_id1": "000",
"device_id2": "000",
"device_id3": "000",
"device_id4": "000",
"width": 256,
"height": 768,
"device_model": "pixel",
"os_version": "Android 10.0",
"provider": "O2",
"network": "1",
"channel": "Google Play",
"app_version": "1.0",
"sdk_version": "2.8.0",
"#custem_event_property_name": "CustomEventPropertyValue"
}
},
{
"client_id": "test_appid",
"device_id": "test_device_id",
"user_id": "test_user_id",
"type": "track",
"name": "#EventName",
"properties": {
"os": "Android",
"device_id1": "000",
"device_id2": "000",
"device_id3": "000",
"device_id4": "000",
"width": 256,
"height": 768,
"device_model": "pixel",
"os_version": "Android 10.0",
"provider": "O2",
"network": "1",
"channel": "Google Play",
"app_version": "1.0",
"sdk_version": "2.8.0",
"#custem_event_property_name": "CustomEventPropertyValue"
}
}
]
}

常见问题

  • 若当前事件的主体并非设备或账号,device_id 和 user_id 可以传入任意一个固定值
  • 为了保证服务端上报的事件也能使用设备维度进行分析,建议在客户端调用 SDK 的 GetDeviceID 接口取得 SDK 为该设备生产的唯一 ID 并上报到 App 的服务端

特殊类型事件上报

在线人数

由于 SDK 无法推送准确的在线数据,这里提供服务端在线数据推送接口。游戏服务端可以以小于 5 分钟的间隔自行统计在线人数(间隔 1 分钟为最佳),通过接口推送到 TapDB。TapDB 进行数据汇总展现。

注意:在线人数使用 json 格式上报,这与其他通用事件上报的格式有差别,请注意区分。

POST https://se.tapdb.net/tapdb/online

Content-Type: application/json

请求内容:

参数参数类型参数说明
client_idstring游戏的 ClientID
onlinesarray多条在线数据(最多 100 条)

其中 onlines 数组的结构为

参数参数类型参数说明
serverstring服务器。TapDB 对同一服务器每一个自然 5 分钟仅接受一次数据
onlinenumber在线人数
timestampnumber当前统计数据的时间戳(秒)。TapDB 会按照自然 5 分钟进行数据对齐

示例:

{
"client_id":"ClientID",
"onlines":[{
"server":"s1",
"online":123,
"timestamp":1489739590
},{
"server":"s2",
"online":188,
"timestamp":1489739560
}]
}

常见问题

Q:统计数据如何按 5 分钟对齐

A:在线人数图表展示的横坐标每个点间隔五分钟,分别是每个小时的 0、5、10 至 55 分,实际数据统计周期为该时间点前后 2.5 分钟。 以 10 点 05 分为例,统计的是 10 点 02 分 30 秒至 10 点 07 分 30 秒这个时间范围(指上报数据内容的 timestamp 字段,而非实际请求接口的时间)内,各 server 在线人数的总和。

Q:上报的数据需要多久后可以被显示

A:当一个统计周期结束后,该统计周期的数据将被展示。以 10 点 05 分为例,统计周期为 10 点 02 分 30 秒至 10 点 07 分 30 秒,这段时间内的数据将在 10 点 07 分 30 秒后被展示。

Q:在线人数曲线有缺口是什么原因

A:请检查上报数据的频率是否低于 5 分钟一次。为了保证图表的展示的曲线平滑,可直接将上报频率调整为每分钟 1 次,并在上报失败时进行重试,直至上报成功。

充值记录

由于 SDK 推送可能会不准确,建议直接使用服务端充值推送接口。注意需要停止客户端 SDK 中充值信息的上报,防止重复统计。

POST https://e.tapdb.net/v2/event

Content-Type: application/json

{
"name": "charge", // 事件名,固定为 charge
"client_id": "ClientID", // 必需。注意 ClientID 需要被替换成游戏的 ClientID
"user_id": "userId", // 必需。用户ID。必须和SDK的setUser接口传递的userId一样,并且该用户已经通过SDK接口进行过推送
"type": "track", // 必需。数据类型,请确保传入的值为 track
"properties": {
"ip": "8.8.8.8", // 可选。充值用户的IP
"order_id": "100000", // 可选。长度大于0并小于等于256。订单ID。
"amount": 100, // 必需。大于0并小于等于100000000000。充值金额。单位分,即无论什么币种,都需要乘以100
"virtual_currency_amount": 100, //获赠虚拟币数量,必传,可为0
"currency_type": "CNY", // 可选。货币类型。国际通行三字母表示法,为空时默认CNY。参考:人民币 CNY,美元 USD;欧元 EUR
"product": "item1", // 可选。长度大于0并小于等于256。商品名称
"payment": "alipay" // 可选。长度大于0并小于等于256。充值渠道
}
}

TapDB 并不会对上报的充值数据进行去重,当接口返回 200 时则代表 TapDB 已经接受到该条日志数据,请到埋点概览中查看该条数据后续的落盘情况。反复上报相同订单记录将会导致数据被重复统计