# 混合上报模式

> 来源：https://help.gravity-engine.com/docs/client-sdk/hybrid-reporting
> 说明客户端 SDK 与业务服务端共同上报数据的混合模式，并以付费事件为例讲解用户标识传递和接入步骤。



如果您应用内有些事件需要通过自有后端直接报送给引力引擎，那我们推荐您使用 **混合上报模式** 来完成接入，继续阅读本篇文档，我们将以付费事件为例讲解混合上报模式的接入步骤。

## 1. 客户端接入 [#1-客户端接入]

客户端接入引力引擎提供的 SDK，不同客户端技术栈，对应不同的 SDK，具体可以参考 [接入前准备](/docs/getting-started/overview)。

> 客户端 SDK 会负责自采集很多基础事件和属性，这部分工作引力提供的 SDK 已经完成封装

## 2. 服务端接入 [#2-服务端接入]

服务端接入[事件收集上报接口](/docs/server-integration/event-collection/restful-api)，完成事件的服务端报送功能，您需要注意以下几点：

* 服务端仅负责事件的收集上报，不负责用户的注册，用户注册需要调用客户端 SDK 的 `initialize` 方法完成；
* 客户端和服务端使用的用户 `client id` 需要保持一致；
* 在客户端完成 `initialize` 方法调用之后，服务端才能开始做事件采集上报，否则上报不成功；
* 服务端接入事件上报时，请参考 [元事件页面](https://web.gravity-engine.com/#/manage/metadata/metaEvent) 下关于事件的详情属性；
* 请尽量上报事件的公共属性，引力不做强制要求，但是上报足够多属性，可以方便您后续在引力平台使用数据分析功能（ `$city`、 `$province` 、 `$country` 、 `$browser` 、 `$browser_version` 属性可以不上报，引力后端会自动采集）；
* 关于属性的更多信息，请您参考 [事件属性页面](https://web.gravity-engine.com/#/manage/metadata/eventProperty)。

> **通过 API 上报请务必添加参数：`$lib`，并固定传入字符串`api`**

以服务端上报付费事件为例，您需要传入如下属性

```json
{
  "type": "track",
  "event": "$PayEvent",
  "time": 1669860000000,
  "time_free": true,
  "properties": {
    "$lib_version": "1.0",
    "$lib": "api",
    "$network_type": "4g",
    "$manufacturer": "HONOR",
    "$brand": "HONOR",
    "$model": "JLH-AN00",
    "$screen_width": 360,
    "$screen_height": 796,
    "$system_language": "zh_CN",
    "$os": "android",
    "$os_version": "Android 12",
    "$pay_amount": 600,
    "$pay_type": "CNY",
    "$order_id": "你的订单ID",
    "$pay_reason": "月卡",
    "$pay_method": "微信",
    "$is_first_pay": false,
    "$ip": "用户真实IP"
  }
}
```
