# 对 ppl（用户变量）上报验证

## 场景一：用户变量之登录用户ID

验证上传的登录用户ID数据（因登录用户ID是主键，因此若未上传登录用户ID，其他任何上传的用户变量都是无效的。）

### **登录用户ID配置方式** <a href="#deng-lu-yong-hu-id-pei-zhi-fang-shi" id="deng-lu-yong-hu-id-pei-zhi-fang-shi"></a>

登录GrowingIO平台，在主菜单中选择**数据中心**>**数据管理**>**变量**>**用户变量**，在用户变量下的**登录用户变量**页签下，打开登录用户ID的启动状态，即完成配置。

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M92_qwMjXc_GxM05uxs%2F%E7%99%BB%E5%BD%95%E7%94%A8%E6%88%B7ID%E9%85%8D%E7%BD%AE.png?alt=media\&token=d145ff7a-ea63-425e-94fb-9de971a111c9)

**对应的代码**

此示例中的用户变量为登录用户ID，在用户登录时设置

| 平台 | 原型 | 代码示例 |
| -- | -- | ---- |

| JS SDK | <p>// 用户登录时，设置登录用户ID</p><p>gio('setUserId', userId);</p><p>// 用户退出登录时，清除登录用户ID</p><p>gio('clearUserId');</p> | <p>// 用户登录时，设置登录用户ID</p><p>gio('setUserId', '123456');</p><p>// 用户退出登录时，清除登录用户ID</p><p>gio('clearUserId');</p> |
| ------ | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |

| Android SDK | <p>//用户登录时，设置登录用户ID</p><p>GrowingIO.getInstance().setUserId(String userId);</p><p>//用户退出登录时，清除登录用户ID</p><p>GrowingIO.getInstance().clearUserId();</p> | <p>//用户登录时，设置登录用户ID</p><p>GrowingIO.getInstance().setUserId("123456");</p><p>//用户退出登录时，清除登录用户ID</p><p>GrowingIO.getInstance().clearUserId();</p> |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |

| iOS SDK | <p>//用户登录时，设置登录用户ID</p><p>+ (void)setUserId:(NSString \*)userId;</p><p>//用户退出登录时，清除登录用户ID</p><p>+ (void)clearUserId;</p> | <p>//用户登录时，设置登录用户ID</p><p>\[Growing setUserId:@"123456"];</p><p>//用户退出登录时，清除登录用户ID</p><p>\[Growing clearUserId];</p> |
| ------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |

在对应的应用（网站、Android 或者 iOS App）中的进行登录、退出登录、切换账号登录的操作，通过 Debugger 工具验证数据准确性

按照如下流程图验证

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M92apaco76JUq2b58Ov%2F%E6%B5%81%E7%A8%8B1%20.png?alt=media\&token=a02d2887-c9f0-44e7-9d13-6b92f4ba1c1d)

在本例中，如下图的数据请求说明打点代码生效

* 未登录

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M92b7bo5nZ2P_UKAViW%2F%E6%B5%81%E7%A8%8B2.png?alt=media\&token=78056927-6683-4a63-9886-adf8c055f8c1)

* 已登录

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M92bEvBLkkGsnLj10bP%2F%E6%B5%81%E7%A8%8B3.png?alt=media\&token=c30c6b15-97ce-41ab-81ce-6b1c76e43001)

## 场景二：其他用户变量

验证上传的除登录用户ID之外的其他用户变量数据（因登录用户ID是主键，因此若未上传登录用户ID，其他任何上传的用户变量都是无效的，所以请确保已经上传登录用户ID）

本例中除登录用户ID之外，还上传了用户性别、用户年龄这两个用户变量

**其他用户变量配置方式示例**

| 标识符         | 名称   | 描述   | 归因              |
| ----------- | ---- | ---- | --------------- |
| gender\_ppl | 用户性别 | 用户性别 | 根据需求选择（不涉及数据验证） |
| age\_ppl    | 用户年龄 | 用户年龄 | 根据需求选择（不涉及数据验证） |

**对应的代码**

此示例中的用户变量为“用户性别（gender\_ppl）”、“用户年龄（age\_ppl）”，在用户登录或者变量值发生变化时进行设置

| 平台 | 原型 | 代码示例 |
| -- | -- | ---- |

| JS SDK | gio('people.set', key, value);或gio('people.set', customerVariables); | gio('people.set', {'gender\_ppl': '男', 'age\_ppl': 25}); |
| ------ | -------------------------------------------------------------------- | -------------------------------------------------------- |

| Android SDK | <p>GrowingIO.getInstance().setPeopleVariable(String key, String value);</p><p>或</p><p>GrowingIO.getInstance().setPeopleVariable(JSONObject peopleVariables);</p> | <p>JSONObject jsonObject = new JSONObject();</p><p>jsonObject.put("gender\_ppl", "男");</p><p>jsonObject.put("age\_ppl", 25);</p><p>GrowingIO.getInstance().setPeopleVariable(jsonObject);</p> |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

| iOS SDK | <p>+ (void)setPeopleVariableWithKey:(NSString \*)key andStringValue:(NSString \*)stringValue;</p><p>或</p><p>+ (void)setPeopleVariable:(NSDictionary\<NSString \*, NSObject \*> \*)variable;</p> | \[Growing setPeopleVariable:@{@"gender\_ppl":@"男", @"age\_ppl":@25}]; |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |

在对应的应用（网站、Android 或者 iOS App）中触发对应的用户变量，通过 Debugger 工具验证数据准确性

按照如下流程图验证

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M93EYHoqrdfRuLNRpYz%2Fppl%E6%A0%A1%E9%AA%8C.png?alt=media\&token=274f0a39-c4ab-43a2-a43c-ad898c8469cd)

在本例中，如下图的数据请求说明打点代码生效

![](https://3124430735-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2rhnIRdtpnYwQL2kvm%2F-M92_2_0WGSc6CFQA0ix%2F-M93EgqaRmgAvP8TjRRA%2Fppl%E6%A0%A1%E9%AA%8C2.png?alt=media\&token=e8e44437-d066-42b3-8e47-3afbefe6d2e5)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://growingio.gitbook.io/v3/developer-manual/debugging/verification/ppl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
