# 进阶功能

> 来源：https://help.gravity-engine.com/docs/client-sdk/quick-apps/advanced
> 汇总 Gravity Engine 快应用 SDK 的进阶配置与调用示例，包括第三方平台绑定等扩展能力。







## 1. onComplete 回调函数 [#1-oncomplete-回调函数]

对于 `track`、`userSet`、`userSetOnce`、`userAdd`、`userDel`、`userAppend`、`userUniqAppend`、`userNumberMax`、`userNumberMin` 等方法，支持传入 `onComplete` 回调。可以直接在原参数列表后传入 `onComplete`，也可以使用参数对象的方式。如果使用参数对象，参数对象中必须包含 `onComplete`，否则会出现参数错误。

以上传事件为例：

```js
// 以参数列表的形式传入回调
ge.track("test", { testkey: 123 }, new Date(), (res) => {
  console.log(res);
});

// 以参数对象的形式传入回调
ge.track({
  eventName: "test", // 必填
  properties: { testkey: 123 }, // 可选
  time: new Date(), // 可选
  onComplete: (res) => {
    console.log(res);
  }, // 必填
});
```

`onComplete` 的参数 `res` 为 `object` 类型，有两个属性 `code` 和 `msg`。

* `res.code` 为 `int` 类型，定义如下：
  * `0`：成功
  * `-3`：网络或服务端异常
  * `2001`：应用未授权或已过期
  * `2000`：权限不足，该用户尚未初始化
  * `1004`：参数错误，一般是参数类型错误，或者缺失参数
  * `1001`：数据错误，json 解析错误
* `res.msg` 是对 `res.code` 的文字说明。

## 2. 绑定三方平台 [#2-绑定三方平台]

引力支持与数数 BI 打通，具体如下：

在用户归因成功之后，引力将使用数数的[数据接收接口](https://docs.thinkingdata.cn/ta-manual/v3.7/installation/installation_menu/restful_api.html#restful-api-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)透传数据到数数后台，方便您在数数平台实时查看用户买量数据（如广告主账户 ID、计划 ID 等等）。您需要完整完成以下两步，才能正常接收数据到数数系统：

1. 引力后台配置数数相关
2. 客户端代码触发三方绑定事件上报

### 2.1 引力后台配置 [#21-引力后台配置]

您需要先在引力后台-[设置-应用管理](https://web.gravity-engine.com/#/manage/appmanage)页面配置项中配置好数数科技回调，需提供以下信息：

**数数应用 id**：从数数后台获取对应产品的 id

**数数采集地址**：根据[数数接收接口文档](https://docs.thinkingdata.cn/ta-manual/v3.7/installation/installation_menu/restful_api.html#restful-api-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)找到您公司对应的采集地址，采集地址以 `sync_json` 结尾

**回传模式选择：**

* `user_set`：多次回调数据到数数时，将会覆盖原有的属性值
* `user_setOnce`：多次回调数据到数数时，如该属性之前已经有值，则忽略本次更新

<img src="__img0" />

**回传数据映射：**

* 键：填入您在数数后台创建的用户属性，用于存放回传的值
* 值：选择宏参数，可选的宏参数相关信息请参考引力后台显示
* 快速调试：输入上报给引力的用户 clientid，测试该用户的归因信息是否正常回调给数数。需要注意，自然量不会回调给数数，仅归因为买量平台的用户会进行回调。

<img src="__img1" />

### 2.2 触发【三方绑定事件】 [#22-触发三方绑定事件]

> **为确保引力能正常执行数数回调，请务必在接入完成后进行以下验证：**
>
> * **触发【三方绑定事件】上报**
> * **在[用户细查-深度挖掘](https://web.gravity-engine.com/#/analysis/userSearch/search/-1)模块中检查该用户的行为序列**
> * **确认行为序列中已包含【三方绑定事件】**
>
> **若未检测到该事件，请检查接入流程是否完整。此验证步骤对确保回调功能正常运行至关重要。**

> 引力会自动将引力 `client ID` 和您传入的数数 `account_id` 以及 `distinct_id` 做关联，在回调数数接口时，通过这个关联传递对应的 `account_id`、`distinct_id` 给数数后台。

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

```js
ge.bindTAThirdPlatform(CURRENT_USER_TA_ACCOUNT_ID, CURRENT_USER_TA_DISTINCT_ID);
```

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

| 参数名称         | 参数含义                        | 参数类型   | 是否必传 | 备注                   |
| ------------ | --------------------------- | ------ | ---- | -------------------- |
| taAccountId  | 当前用户的数数账户 ID（#account\_id）  | string | 二选一  | 与 taDistinctId 至少传一个 |
| taDistinctId | 当前用户的数数访客 ID（#distinct\_id） | string | 二选一  | 与 taAccountId 至少传一个  |
