# Taro快速集成

> 来源：https://help.gravity-engine.com/docs/client-sdk/other-frameworks/taro-quickstart
> 介绍 Gravity Engine Taro SDK 的安装、初始化、用户注册与事件上报流程，并提供参数说明和调用示例。



本文档主要讲述 **Taro** 接入 [引力引擎](https://gravity-engine.com/) 的技术接入方案，在开始接入前，建议您先阅读 [接入前准备](/docs/getting-started/overview) 以了解接入必备的基础概念。

> 本接入方案仅适用于 **Taro** 开发的项目。如果您使用的是其他开发框架，请访问 [引力引擎SDK总览页面](/docs/client-sdk/sdk-overview) 选择对应的框架接入文档。

## 支持平台 [#支持平台]

* <img src="/docs-assets/helplook/P82uVIO4/68a81c2d8da2a.png" alt="微信小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> 微信小程序
* <img src="/docs-assets/helplook/P82uVIO4/68a81c2d8ccfd.png" alt="支付宝小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> 支付宝小程序
* <img src="/docs-assets/helplook/P82uVIO4/68a81c2d8686f.png" alt="字节小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> 字节小程序
* <img src="/docs-assets/helplook/P82uVIO4/68a81c2da9827.png" alt="百度小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> 百度小程序
* <img src="/docs-assets/helplook/P82uVIO4/68a81c2d8ac7e.png" alt="QQ小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> QQ小程序
* <img src="/docs-assets/helplook/P82uVIO4/68a81c2d9400d.png" alt="京东小程序" style="{ display: 'inline-block', width: 20, height: 20, verticalAlign: 'middle', margin: '0 6px 0 0' }" /> 京东小程序

## 1. 获取 AccessToken [#1-获取-accesstoken]

您可以在 [设置-应用管理](https://web.gravity-engine.com/#/manage/appmanage) 页面点击 **查看参数** 按钮获取当前应用的 AccessToken，请妥善保存避免泄露。

## 2. 配置并启动 SDK [#2-配置并启动-sdk]

开始接入工作之前，您需要先 [下载 SDK](/docs/client-sdk/sdk-overview)。

将 `ge_mp_sdk_version.zip` 中的 `gravityengine.taro.js` 导入工程，并初始化 SDK：

> **每次冷启动过程中，`GravityEngine` 的实例化方法 `new GravityAnalyticsAPI()` 与初始化方法 `setupAndStart()` 均只能被调用一次。`clientId` 参数必须在这两个方法的其中一个传入。**

```javascript
import GravityAnalyticsAPI from "./utils/gravityengine.taro.js";
const config = {
  accessToken: "your_access_token", // 项目通行证，在：网站后台-->设置-->应用列表中找到Access Token列 复制（首次使用可能需要先新增应用）
  clientId: "your_client_id", // 用户唯一标识，如产品为小游戏，则必须填用户openid（注意，不是小游戏的APPID！！！）
  name: "ge",
  // 预设公共属性
  presetSuperProperties:{
    "testSuperKey":"testSuperValue"
  }
};
const ge = new GravityAnalyticsAPI(config);
ge.setupAndStart();
```

> **小程序项目需要配置项目合法域名：** 您需要将 `https://api.gravity-engine.com` 配置到开发者后台 request 合法域名列表中。

## 3. 初始化 [#3-初始化]

在用户可以获取到用户唯一 ID 时调用此方法，推荐首次启动时调用。

> 首次调用后，需要在 `initialize` 的 `then` 回调中才能继续调用其他事件上报的方法。
>
> 初始化方法调用成功之后，后续冷启动可以不再调用，只需要正常启动 SDK 即可（多次调用也不会有问题，引力做了兼容）。

### 3.1 方法示例 [#31-方法示例]

```javascript
ge.initialize({
  name: "your_name",
  version: 123,
  openid: "your_openid",
  enable_sync_attribution: false,
  adData:{
    "testAdKey":"testAdValue"
  }
})
  .then((res) => {
    console.log("initialize success", res);
  })
  .catch((err) => {
    console.log("initialize failed", err);
  });
```

### 3.2 参数说明 [#32-参数说明]

| **参数名称**                  | **参数含义**                                                                                       | **参数类型** | **是否必传** |
| ------------------------- | ---------------------------------------------------------------------------------------------- | -------- | -------- |
| name                      | 用户名或用户唯一ID（可理解为业务中的昵称），如果不需要昵称，可以填：默认值，但是不可以传空字符串！                                             | string   | 是        |
| version                   | 产品发布版本号，便于后续在引力后台过滤                                                                            | number   | 是        |
| openid                    | 用户openid                                                                                       | string   | 是        |
| enable\_sync\_attribution | 是否开启同步获取归因信息（参考 [同步归因](/docs/attribution/synchronous-attribution) 文档），在媒体点击下发延迟的情况下会影响归因，请谨慎开启 | boolean  | 是        |
| channel                   | 当前用户来源渠道，对应用户细查中的：客户端渠道                                                                        | string   | 否        |
| adData                    | 预设归因信息                                                                                         | object   | 否        |

## 4. 事件上报 [#4-事件上报]

### 4.1 业务注册事件上报 [#41-业务注册事件上报]

> **此功能仅适用于需要统计业务注册转化数据的场景。如果您的应用不需要追踪用户注册行为，可以跳过此事件接入。**

> 该方法可多次调用，每次调用都会上报一个用户注册事件（计算指标时会去重）。

当用户完成应用内业务注册后，您可以调用 `registerEvent` 方法来上报用户注册事件（`$MPRegister`）给引力，引力会使用该事件统计指标：标准\_注册数。

#### 调用示例 [#调用示例]

```javascript
ge.registerEvent();
```

### 4.2 付费事件上报 [#42-付费事件上报]

> **付费事件上报用于收入统计和分析，如您的应用不涉及内购或付费服务，则无需接入此事件。**

> 如果您需要通过后端 API 方式上报付费事件，请参考 [混合上报模式](/docs/client-sdk/hybrid-reporting) 来接入事件上报接口报送付费事件。

当用户发生付费行为时，需要调用 `payEvent` 方法记录用户付费事件，此事件非常重要，会影响买量和 ROI 统计，请务必重点测试！

#### 方法示例 [#方法示例]

```javascript
ge.payEvent(payAmount, payType, orderId, payReason, payMethod);
```

#### 参数说明 [#参数说明]

| **参数名称**  | **参数含义**                                                                                                                 | **参数类型** | **是否必传** |
| --------- | ------------------------------------------------------------------------------------------------------------------------ | -------- | -------- |
| payAmount | 付费金额，单位为分。请务必注意，传错单位可能会导致买量受到影响！                                                                                         | number   | 是        |
| payType   | 货币类型，按照国际标准组织 ISO 4217 中规范的 3 位字母，例如 CNY 人民币、USD 美金等，具体请参考：[国际标准组织 ISO 4217 代码表](https://en.wikipedia.org/wiki/ISO_4217) | string   | 是        |
| orderId   | 订单号。引力引擎会通过订单号去重，避免重复上报，请务必准确传入！                                                                                         | string   | 是        |
| payReason | 付费原因，例如：购买钻石、办理月卡                                                                                                        | string   | 是        |
| payMethod | 付费方式，例如：支付宝、微信、银联等                                                                                                       | string   | 是        |

#### 调用示例 [#调用示例-1]

```javascript
ge.payEvent(300, "CNY", "your_order_id", "月卡", "支付宝");
```

### 4.3 广告观看事件上报 [#43-广告观看事件上报]

> **广告观看上报适用于广告变现类应用，若您的应用未集成广告模块，则无需接入此事件。**

> **抖音小游戏、快手小游戏、B站小游戏无需接入，会由引力后端自动拉取，具体配置，请参考[这里](https://gravityengine.feishu.cn/wiki/SBsxwmeb5iNrPKkUtzCcmisXnzd#OwM8doB35oKDTrxsHKkcvr9Bnqe)**

若您的产品内有广告变现，则需要在用户点击广告观看的同时上报用户广告观看事件给引力，具体参考如下：

#### 方法示例 [#方法示例-1]

```javascript
ge.miniGameAdShowEvent(adType, adUnitId, otherProperties);
```

#### 参数说明 [#参数说明-1]

为生成准确的广告收益分析报表，请尽量遵循规范填写下方的广告平台参数。正确的字段是生成有价值报表的基础。

我们为您准备了详细的指引：👉 [广告聚合平台字段配置说明](/docs/appendix/ad-mediation-fields)

| **参数名称**        | **参数含义**                                                                                                                  | **参数类型** | **是否必传** |
| --------------- | ------------------------------------------------------------------------------------------------------------------------- | -------- | -------- |
| adType          | 广告类型（取值为：reward(激励视频广告)、banner(横幅广告)、native(信息流广告)、interstitial(插屏广告)、splash(开屏广告)、video\_feed(视频信息流)、video\_begin(贴片广告)） | string   | 是        |
| adUnitId        | 广告位ID。一般以 adunit 开头，注意不要填错                                                                                                | string   | 是        |
| otherProperties | 自定义参数。其他需要携带的自定义参数，需要提前在引力后台元数据中针对 AdShow 事件配置好属性                                                                         | object   | 是        |

#### 调用示例 [#调用示例-2]

```javascript
ge.miniGameAdShowEvent("reward", "your_ad_unit_id", { custom_param: "12345" });
```

## 5. 接入验证 [#5-接入验证]

> **正式上线之前，请完成本节的校验，否则可能会导致买量上报异常！**

### 5.1 关键事件验证 [#51-关键事件验证]

在引力后台[事件流](https://web.gravity-engine.com/#/manage/metadata/eventFlow) 界面开启**加载实时数据**，并在产品中触发以下几个事件。事件流使用说明：[事件流 - 飞书云文档](https://gravityengine.feishu.cn/wiki/ZFmYwiDxfiZe2lkt3occ6yBonpf)

| 事件名  | 事件英文名         | 触发时机       | 采集方式                   | 默认映射到媒体事件 | 备注                      |
| ---- | ------------- | ---------- | ---------------------- | --------- | ----------------------- |
| 用户注册 | `$MPRegister` | 用户完成业务注册之后 | 调用SDK的**上报业务注册事件**方法采集 | 暂无        | 接入了**业务注册上报事件**的产品均需要校验 |
| 付费   | `$PayEvent`   | 用户付费之后     | 调用SDK的**上报用户付费事件**方法采集 | 付费        | 接入了**付费事件上报事件**的产品均需要校验 |
| 广告展示 | `$AdShow`     | 用户观看广告之后   | 调用SDK的**上报广告展示事件**方法采集 | 暂无        | 接入了**广告事件上报事件**的产品均需要校验 |

触发操作后，请在[事件流](https://web.gravity-engine.com/#/manage/metadata/eventFlow) 界面中筛选测试用户的 Client ID，观察对应事件是否出现在实时入库页面。若事件数据正常显示，则说明接入成功；如出现于错误数据页面请根据页面错误提示进行排查；如未显示对应数据，请及时联系引力运营支持团队获取协助。

### 5.2 避免重复上报 [#52-避免重复上报]

如果您之前单独接了媒体的回传（SDK 或者 API），则上线之前需要去掉，否则可能会导致重复上报数据！

> 至此验证无误之后，您可以正常上线了。
