跟踪分析

运行机制

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

该功能可处理以下事件:

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

如何获取

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

  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
POST https://tracking-api.xsolla.com/v1/tokens
描述
ContentTypeapplication/json
AuthorizationAuthorization: Basic <your_authorization_basic_key>头,其中<your_authorization_basic_key>是按照Base64标准加密的商户ID: API密钥对。请前往发布商帐户找到这些参数:
  • 商户ID在以下位置显示:
    • 公司设置 > 公司部分。
    • 在发布商帐户任意页面的浏览器地址栏的URL中。URL的格式如下:https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section>
  • API密钥仅在创建它时在发布商帐户中显示一次,必须存储在己侧。您可以在以下部分中创建新的密钥:
    • 公司设置 > API密钥
    • 项目设置 > API密钥
必需
注意

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

关于密钥的建议:

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

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

http

  • http
  • php
POST https://tracking-api.xsolla.com/v1/tokens

Headers:
Content-Type: application/json
Authorization: Basic 12kj3hlk1j2hlkjhlk1j2h3lkj

Body:
{
  "sourceType": "client",
  "sourceName": "landing",
  "projectId": 1
}

HTTP/1.1 201 Token created
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2 g_dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du"
}
<?php

$curl = curl_init();

$merchantId = 1;
$projectId = 2;
$apiKey = '<apiKey>';

$payload = [
    'sourceType' => 'server',
    'sourceName' => 's1',
    'projectId' => $projectId,
];

curl_setopt($curl, CURLOPT_USERPWD, $merchantId . ":" . $apiKey);


curl_setopt_array($curl, array(
    CURLOPT_URL => "https://tracking-api.xsolla.com/v1/tokens",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        "Content-type: application/json"
    ],
));


$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
相应代码描述
201创建了令牌
400请求参数无效
401项目密钥无效

注册事件发送

在此之前需先获取令牌

HTTP请求

Copy
Full screen
Small screen
POST 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
POST https://tracking-api.xsolla.com/v1/events

Headers:
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU

Body:
{
  "type": "registration",
  "traits": {
    "trackingId": "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
    "userId": "20181126"
  },
  "properties": {
  },
  "context": {
  }
}'
<?php

$curl = curl_init();

$token  = '<token>';

$payload = [
    'type' => 'registration',
    'traits' => [
        'trackingId' => "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
        'userId' => "20181126",
    ],
    'properties' => [],
    'context' => [],
];

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://tracking-api.xsolla.com/v1/events",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode($payload,JSON_FORCE_OBJECT),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer {$token}",
        "Content-type: application/json"
    ],
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
}

创建事件

在此之前需先获取令牌

HTTP请求

Copy
Full screen
Small screen
POST https://tracking-api.xsolla.com/v1/events
描述
Authorization之前获取的令牌。
参数类型描述
type字符串事件类型。
traits对象用户身份数据:电话、电子邮箱、游戏ID等。
context对象上下文数据。
properties对象事件属性。
createdAt日期格式:RFC 3339或ISO 8601格式的日期和时间。
示例事件:切换到着陆页
Copy
Full screen
Small screen
POST https://tracking-api.xsolla.com/v1/events

Headers:
Content-Type: application/json
Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU 

Body:
{
  "type": "landing_visit",
  "traits":{
    },
  "properties":{
    },
  "context": {
    "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"
  }
}

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

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

Headers:
Content-Type: application/json
Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU 

Body:
{
  "type": "buy_btn",
  "traits":{
    },
  "properties":{
    "pkg_type":"bronze"
    },
  "context": {
    "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"
  }
}
相应代码描述
204已添加事件
400事件无效
401令牌无效

初始化事件

在此之前需先获取令牌

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

发送事件

Copy
Full screen
Small screen
xnt("sendEvent", EVENT_TYPE, EVENT_PROPERTIES);
参数描述
EVENT_TYPE事件名称(字符串)。例如:landing_visit
EVENT_PROPERTIES事件属性(JS对象)。
示例
Copy
Full screen
Small screen
xnt("sendEvent", "landing_visit");
xnt("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
xnt("putContext", CONTEXT_OBJECT);
xnt("putTraits", TRAITS_OBJECT);
参数描述
CONTEXT_OBJECT事件上下文(JS对象)。
TRAITS_OBJECT用户数据(JS对象)。
注:
上下文的userAgentuserLocale将自动添加。这两个方法添加的数据将合并到事件数据中。

实现脚本

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

Copy
Full screen
Small screen
<script>
(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');
xnt("init", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_ dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du");
xnt("sendEvent", "buy_btn", { pkg_type : "gold" });
</script>
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
为此页面评分
为此页面评分
我们还有其他可改进之处吗?

不想回答

感谢您的反馈!
上次更新时间: 2024年1月22日

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

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!