跟踪分析
运行机制
跟踪分析允许您收集并累计用户生成的事件以评估活动成效及引荐数量。所获数据可用于吸引联盟网络的参与,因为越有力的数据会让邀请更具吸引力。
该功能可处理以下事件:
- 到着陆页的切换
- 从着陆页到商店的切换
如何获取
要集成跟踪分析,请执行以下操作:
- 获取JSON Web令牌(JWT)。
- 将请求参数中的tracking_id保存到您的网站cookie。包含tracking_id请求的示例:
https://playnewz.com?utm_source=n6LI9yVu&utm_campaign=5b9bff5f9d31b&tracking_id=19e2DLjNTk2YOdXA4d8J3NReNkXNafhC
。 - 每当创建了新用户,通过注册事件发送方法发送user_id和tracking_id。
- 建议异步发送请求,因为这样在等待艾克索拉跟踪API响应的过程中不会干扰用户注册。
- 否则,请使用超时。请注意,如果等待艾克索拉跟踪API响应的时间超过指定时间,将不会跟踪新用户。
- 要创建及管理自定义事件,请实现以下跟踪API方法:创建、初始化和发送事件。
- 在您的网站上实现跟踪脚本。
获取令牌
HTTP请求
Copy
- http
1POST https://tracking-api.xsolla.com/v1/tokens
头 | 描述 |
---|---|
ContentType | application/json |
Authorization | Authorization: Basic <your_authorization_basic_key> 头,其中<your_authorization_basic_key> 是按照Base64标准加密的商户ID: API密钥对。请前往发布商帐户找到这些参数:
|
注意
关于使用API密钥的详细信息,请参阅API参考。
关于密钥的建议:
- 请在己侧保存生成的API密钥。您仅会在创建API密钥时在发布商帐户中看见它一次。
- 请妥善保管API不被泄露。它提供对您的个人帐户及您在发布商帐户中项目的访问权限。
- API密钥必须存储在您的服务器上,切勿保存在代码或前端中。
如果所需API调用不包含project_id
路径参数,请使用在您公司的所有项目中都有效的API密钥来设置授权。
参数 | 描述 |
---|---|
sourceType | 数据源类型。可接受以下值:
|
sourceName | 数据来源名称。 |
projectId | 项目ID。 |
Copy
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
- http
1POST https://tracking-api.xsolla.com/v1/events
发送方法时会完成以下步骤:
- 最终用户打开其在流量来源处(创作者的直播页面、推广页等)找到的跟踪链接。该动作会生成一个点击ID。
- 代理页面侧会生成一个跟踪ID,并以参数形式传入着陆页。
- 用户访问着陆页并注册。
- 游戏开发者通过跟踪API发送注册事件,从而将用户的用户ID和跟踪ID传入参数。
头 | 描述 |
---|---|
Authorization | 之前获取的令牌。 |
参数 | 类型 | 描述 |
---|---|---|
type | 字符串 | 之前获取的令牌。 |
traits | 对象 | 用户身份数据:
|
context | 对象 | 必须为空。 |
properties | 对象 | 必须为空。 |
Copy
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
- http
1POST https://tracking-api.xsolla.com/v1/events
头 | 描述 |
---|---|
Authorization | 之前获取的令牌。 |
参数 | 类型 | 描述 |
---|---|---|
type | 字符串 | 事件类型。 |
traits | 对象 | 用户身份数据:电话、电子邮箱、游戏ID等。 |
context | 对象 | 上下文数据。 |
properties | 对象 | 事件属性。 |
createdAt | 日期 | 格式:RFC 3339或ISO 8601格式的日期和时间。 |
Copy
- http
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
- http
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
- html
1xnt("init", YOUR_TOKEN);
发送事件
Copy
- html
1xnt("sendEvent", EVENT_TYPE, EVENT_PROPERTIES);
参数 | 描述 |
---|---|
EVENT_TYPE | 事件名称(字符串)。例如:landing_visit 。 |
EVENT_PROPERTIES | 事件属性(JS对象)。 |
Copy
- html
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 | 系统收到事件的时间。 |
context
和traits
参数补充事件,请使用以下方法:Copy
- html
1xnt("putContext", CONTEXT_OBJECT);
2xnt("putTraits", TRAITS_OBJECT);
参数 | 描述 |
---|---|
CONTEXT_OBJECT | 事件上下文(JS对象)。 |
TRAITS_OBJECT | 用户数据(JS对象)。 |
注:
上下文的
userAgent
和userLocale
将自动添加。这两个方法添加的数据将合并到事件数据中。实现脚本
在着陆页面实现以下脚本:
Copy
- html
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>
本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。