跟踪分析

运行机制

跟踪分析允许您收集并累计用户生成的事件以评估活动成效及引荐数量。所获数据可用于吸引联盟网络的参与,因为越有力的数据会让邀请更具吸引力。

该功能可处理以下事件:

  • 到着陆页的切换
  • 从着陆页到商店的切换

如何获取

要集成跟踪分析,请执行以下操作:

  1. 获取JSON Web令牌(JWT)。
  2. 将请求参数中的tracking_id保存到您的网站cookie。包含tracking_id请求的示例:https://playnewz.com?utm_source=n6LI9yVu&utm_campaign=5b9bff5f9d31b&tracking_id=19e2DLjNTk2YOdXA4d8J3NReNkXNafhC
  3. 每当创建了新用户,通过注册事件发送方法发送user_idtracking_id
    • 建议异步发送请求,因为这样在等待艾克索拉跟踪API响应的过程中不会干扰用户注册。
    • 否则,请使用超时。请注意,如果等待艾克索拉跟踪API响应的时间超过指定时间,将不会跟踪新用户。
  4. 要创建及管理自定义事件,请实现以下跟踪API方法:创建初始化发送事件。
  5. 在您的网站上实现跟踪脚本。

获取令牌

HTTP请求

Copy
Full screen
Small screen
1POST https://tracking-api.xsolla.com/v1/tokens
描述
ContentTypeapplication/json
AuthorizationAuthorization: Basic <your_authorization_basic_key>头,其中<your_authorization_basic_key>是按照Base64标准加密的商户ID: API密钥对。请前往发布商帐户找到这些参数:必需
注意

关于使用API密钥的详细信息,请参阅API参考

关于密钥的建议:

  • 请在己侧保存生成的API密钥。您仅会在创建API密钥时在发布商帐户中看见它一次。
  • 请妥善保管API不被泄露。它提供对您的个人帐户及您在发布商帐户中项目的访问权限。
  • API密钥必须存储在您的服务器上,切勿保存在代码或前端中。

如果所需API调用不包含project_id路径参数,请使用在您公司的所有项目中都有效的API密钥来设置授权。

参数描述
sourceType数据源类型。可接受以下值:
  • client。此数据类型视为不可信,数据存储中所有相关事件均具有trusted: false状态。
  • server。此数据类型视为可信,数据存储中所有相关事件均具有trusted: true状态。
sourceName数据来源名称。
projectId项目ID。
示例
Copy
Full screen
Small screen

http

  • http
  • php
 1POST https://tracking-api.xsolla.com/v1/tokens
 2
 3Headers:
 4Content-Type: application/json
 5Authorization: Basic 12kj3hlk1j2hlkjhlk1j2h3lkj
 6
 7Body:
 8{
 9  "sourceType": "client",
10  "sourceName": "landing",
11  "projectId": 1
12}
13
14HTTP/1.1 201 Token created
15{
16  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2 g_dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du"
17}
 1<?php
 2
 3$curl = curl_init();
 4
 5$merchantId = 1;
 6$projectId = 2;
 7$apiKey = '<apiKey>';
 8
 9$payload = [
10    'sourceType' => 'server',
11    'sourceName' => 's1',
12    'projectId' => $projectId,
13];
14
15curl_setopt($curl, CURLOPT_USERPWD, $merchantId . ":" . $apiKey);
16
17
18curl_setopt_array($curl, array(
19    CURLOPT_URL => "https://tracking-api.xsolla.com/v1/tokens",
20    CURLOPT_RETURNTRANSFER => true,
21    CURLOPT_ENCODING => "",
22    CURLOPT_MAXREDIRS => 10,
23    CURLOPT_TIMEOUT => 30,
24    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
25    CURLOPT_CUSTOMREQUEST => "POST",
26    CURLOPT_POSTFIELDS => json_encode($payload),
27    CURLOPT_HTTPHEADER => [
28        "Content-type: application/json"
29    ],
30));
31
32
33$response = curl_exec($curl);
34$err = curl_error($curl);
35
36curl_close($curl);
37
38if ($err) {
39    echo "cURL Error #:" . $err;
40} else {
41    echo $response;
42}
相应代码描述
201创建了令牌
400请求参数无效
401项目密钥无效

注册事件发送

在此之前需先获取令牌

HTTP请求

Copy
Full screen
Small screen
1POST https://tracking-api.xsolla.com/v1/events

发送方法时会完成以下步骤:

  1. 最终用户打开其在流量来源处(创作者的直播页面、推广页等)找到的跟踪链接。该动作会生成一个点击ID
  2. 代理页面侧会生成一个跟踪ID,并以参数形式传入着陆页。
  3. 用户访问着陆页并注册。
  4. 游戏开发者通过跟踪API发送注册事件,从而将用户的用户ID跟踪ID传入参数。

描述
Authorization之前获取的令牌。
参数类型描述
type字符串之前获取的令牌。
traits对象用户身份数据:
  • trackingId — 重定向到游戏网站的用户的Tracking ID。艾克索拉在重定向后将其包含在请求参数中发送。
  • userId创建令牌时分配到的user ID
context对象必须为空。
properties对象必须为空。
示例
Copy
Full screen
Small screen

http

  • http
  • php
 1POST https://tracking-api.xsolla.com/v1/events
 2
 3Headers:
 4Content-Type: application/json
 5Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU
 6
 7Body:
 8{
 9  "type": "registration",
10  "traits": {
11    "trackingId": "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
12    "userId": "20181126"
13  },
14  "properties": {
15  },
16  "context": {
17  }
18}'
 1<?php
 2
 3$curl = curl_init();
 4
 5$token  = '<token>';
 6
 7$payload = [
 8    'type' => 'registration',
 9    'traits' => [
10        'trackingId' => "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
11        'userId' => "20181126",
12    ],
13    'properties' => [],
14    'context' => [],
15];
16
17curl_setopt_array($curl, array(
18    CURLOPT_URL => "https://tracking-api.xsolla.com/v1/events",
19    CURLOPT_RETURNTRANSFER => true,
20    CURLOPT_ENCODING => "",
21    CURLOPT_MAXREDIRS => 10,
22    CURLOPT_TIMEOUT => 30,
23    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
24    CURLOPT_CUSTOMREQUEST => "POST",
25    CURLOPT_POSTFIELDS => json_encode($payload,JSON_FORCE_OBJECT),
26    CURLOPT_HTTPHEADER => [
27        "Authorization: Bearer {$token}",
28        "Content-type: application/json"
29    ],
30));
31
32$response = curl_exec($curl);
33$err = curl_error($curl);
34
35curl_close($curl);
36
37if ($err) {
38    echo "cURL Error #:" . $err;
39}

创建事件

在此之前需先获取令牌

HTTP请求

Copy
Full screen
Small screen
1POST https://tracking-api.xsolla.com/v1/events
描述
Authorization之前获取的令牌。
参数类型描述
type字符串事件类型。
traits对象用户身份数据:电话、电子邮箱、游戏ID等。
context对象上下文数据。
properties对象事件属性。
createdAt日期格式:RFC 3339或ISO 8601格式的日期和时间。
示例事件:切换到着陆页
Copy
Full screen
Small screen
 1POST https://tracking-api.xsolla.com/v1/events
 2
 3Headers:
 4Content-Type: application/json
 5Authorization: Bearer
 6eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU 
 7
 8Body:
 9{
10  "type": "landing_visit",
11  "traits":{
12    },
13  "properties":{
14    },
15  "context": {
16    "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "user_locale":"ru"
17  }
18}

示例事件:切换到支付中心

Copy
Full screen
Small screen
 1POST https://tracking-api.xsolla.com/v1/events
 2
 3Headers:
 4Content-Type: application/json
 5Authorization: Bearer
 6eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU 
 7
 8Body:
 9{
10  "type": "buy_btn",
11  "traits":{
12    },
13  "properties":{
14    "pkg_type":"bronze"
15    },
16  "context": {
17    "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "user_locale":"ru"
18  }
19}
相应代码描述
204已添加事件
400事件无效
401令牌无效

初始化事件

在此之前需先获取令牌

Copy
Full screen
Small screen
1xnt("init", YOUR_TOKEN);

发送事件

Copy
Full screen
Small screen
1xnt("sendEvent", EVENT_TYPE, EVENT_PROPERTIES);
参数描述
EVENT_TYPE事件名称(字符串)。例如:landing_visit
EVENT_PROPERTIES事件属性(JS对象)。
示例
Copy
Full screen
Small screen
1xnt("sendEvent", "landing_visit");
2xnt("sendEvent", "buy_btn", { pkg_type: $(this).data('id') });

事件参数

参数描述
source事件来源(支付中心、landing_page等)。
type事件类型(user_visit、hit等)。
traits用户数据(电子邮箱、user_id、昵称等)。
context事件上下文(ip、gaClientId等)。
properties事件属性(sum、levelup等)。
createdAt事件时间,由来源传入。
timestamp系统收到事件的时间。
如要使用contexttraits参数补充事件,请使用以下方法:
Copy
Full screen
Small screen
1xnt("putContext", CONTEXT_OBJECT);
2xnt("putTraits", TRAITS_OBJECT);
参数描述
CONTEXT_OBJECT事件上下文(JS对象)。
TRAITS_OBJECT用户数据(JS对象)。
注:
上下文的userAgentuserLocale将自动添加。这两个方法添加的数据将合并到事件数据中。

实现脚本

在着陆页面实现以下脚本:

Copy
Full screen
Small screen
1<script>
2(function(i,s,o,g,r,a,m){i['XsollaNetworkTrackingObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(ar guments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.inse rtBefore(a,m)})(window,document,'script','https://cdn.xsolla.net/network/xtracking-0.1.js','xnt');
3xnt("init", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_ dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du");
4xnt("sendEvent", "buy_btn", { pkg_type : "gold" });
5</script>
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
上次更新时间: 2025年7月9日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!
无法发送您的反馈
请稍后重试或发送邮件至doc_feedback@xsolla.com与我们联系。