Analytics REST API
Send Analytics events from non-Unity games through the REST API.
阅读时间6 分钟最后更新于 3 天前
不使用 Unity 的开发者可以通过 Web 终端或 REST API 访问 API。REST API 提供更大的灵活性,让您可以利用喜欢的语言和游戏开发引擎来自动执行工作流程。 Analytics 提供以下 REST API:
最佳实践
生成随机且具有唯一性的 userID
REST API 提供以下方法来生成随机且具有唯一性的 userID:https://collect.analytics.unity3d.com/api/analytics/collect/v1/uuid将事件提交到 Collect API 终端
如果无法通过 SDK 发送事件(例如,从游戏服务器发送的事件,或非 Unity 游戏的事件),则 Collect REST API 会记录事件并将其直接发送到 Unity。https://collect.analytics.unity3d.com/api/analytics/collect/v1/projects/{projectId}/environments/{environmentName}Content-Type: application/json事件有效负载
所有事件都应在请求正文中以 JSON 文档的形式发送到服务器。每个事件类型的文档都不同。 Collect 终端接受两种格式:- 单一事件格式
- 批量事件格式
1.单一事件格式
不需要的参数不必包含在文档中,应忽略它们,而不是发送空参数或 null 参数。任何时间戳早于 31 天或晚于未来 24 小时的事件都将被拒绝,因为它们超出了有效边界。{ "eventName": "specific event code - eg. gameStarted", "userID": "ABCD1-4321a879b185fcb9c6ca27abc5387e914", "unityInstallationID": "Optional-Installation-ID", "unityPlayerID": "Optional-Authenticated-Player-ID", "sessionID": "4879bf37-8566-46ce-9f3b-bd18d6ac614e", "eventUUID": "374cc674-9785-4772-8cca-d7cdf517a590", "eventTimestamp": "yyyy-mm-dd hh:mm:ss.SSS", "eventParams": { "platform": "WEB", "param1": "stringParam", "param2": true, "param3": 1234, "param4": [ "a", "b", "c" ] }}
2.批量事件格式
您可以在单次 POST 中发送多个事件。由于连接池具有高效率,因此这是一种较好的做法。应将 POST 长度保持在 5MB 以下;超出此长度的所有内容都可能被拒绝。 每个事件的格式保持不变,但以包含各个事件的 eventList 数组进行表示。例如:注意:批量事件列表中的事件应按其发生的顺序排列。{ "eventList": [ { "eventName": "clientDevice", "userID": "e44db226-5b29-11ec-819e-dca6325ca17a", "sessionID": "8ebb023e-6edc-11ec-a519-dca6325ca17a", "eventUUID": "02ff8461-8d1d-46bb-94f3-51c81e63b371", "eventVersion": 1, "eventTimestamp": "2022-01-06 03:29:17.030", "eventParams": { "platform": "ANDROID", "userCountry": "US", "clientVersion": "2.0.3", "sdkMethod": "com.unity.services.analytics.Events.Startup" } }, { "eventName": "gameStarted", "userID": "e44db226-5b29-11ec-819e-dca6325ca17a", "sessionID": "8ebb023e-6edc-11ec-a519-dca6325ca17a", "eventUUID": "a379af6c-4fac-4449-b6c7-925ee87b446e", "eventVersion": 1, "eventTimestamp": "2022-01-06 03:29:17.040", "eventParams": { "platform": "ANDROID", "userCountry": "US", "clientVersion": "2.0.3", "sdkMethod": "com.unity.services.analytics.Events.Startup", "userLocale": "en_US" } } ]}
发送 ddnaForgetMe 事件
ddnaForgetMe 事件用于记录玩家请求退出数据收集并删除其数据。UGS Analytics 在收到有效负载后的七天内删除玩家数据。 如果您使用 REST API,但没有自己的 UUID 生成器,则可以使用我们提供的 UUID 生成功能。 如果您发送了此事件,您还必须停止发送用户的数据,否则服务将再次收集用户的数据。{ "eventName": "ddnaForgetMe", "eventTimestamp": "2020-01-01 12:00:00", "eventUUID": "foo", "eventVersion": 1, "sessionID": "foo", "userID": "foo", "eventParams": { "clientVersion": "foo", "sdkMethod": "foo" }}
发送 PIPL 同意
中国新的数据隐私法《个人信息保护法》于 2021 年 11 月 1 日生效。个人信息是指可以识别个人身份(例如姓名或地址)并以电子或其他方式存储的数据。敏感的个人信息是指生物特征、性别认同、宗教信仰、病史、财务状况以及十四周岁以下未成年人的任何个人信息。 PIPL 是一项基于“未明确同意就是拒绝”原则的法规。我们的 Collect 终端使用 HTTP 标头来标识位于中国的用户的同意状态。 应在适当的情况下对要收集的所有 HTTP 请求使用以下标头:标头 | 描述 |
|---|---|
| PIPL_CONSENT | 此标头的存在将表明玩家已同意数据收集。 不同意的玩家不应在请求中设置此标头。标头的值无关紧要。 |
| PIPL_EXPORT | 此标头的存在将表明玩家已同意将其数据发送到中国境外进行处理。 不同意的玩家不应在请求中设置此标头。标头的值无关紧要。 |
标头值 | 描述 |
|---|---|
| no_consent | 指示未通过 PIPL_CONSENT 请求标头对此请求给予同意。 |
| no_export | 指示对于此请求未同意通过 PIPL_EXPORT 请求标头导出数据。 |
curl -v --location --request POST "https://collect.analytics.unity3d.com/collect/api/project/{id}/production" \--header 'Content-Type: application/json' \--header 'PIPL_CONSENT: true' \--header 'PIPL_EXPORT: true' \--data-raw "{ \"userID\": \"some-id\", \"eventName\": \"gameStarted\", \"eventVersion\": 1, \"eventUUID\":\"some-uuid\", \"sessionID\": \"sessionID\", \"eventParams\": { \"platform\": \"ANDROID\", \"clientVersion\": \"testVersion\", \"sdkMethod\": \"UA1_SDKLESS\", \"userLocale\": \"aa_BB\" } }}"