需要记住的一件重要事情是,Analytics 不会自动分析您的应用,而更像是一种工具,让您在不打扰客户的情况下提出问题并获得答案。
在本文中,我们将使用 Telerik AppBuilder 创建一个 NativeScript 应用,并将其连接到 Telerik 平台 Analytics 项目。
请注意,我们在 AppBuilder 中执行的所有操作都可以在 命令行界面 中完成。
如果您还没有帐户,可以创建一个 30 天的试用版,这应该足以尝试 Analytics 组件。
请注意生成的代码片段,其中已包含此 Analytics 产品 ID,它使 SDK 能够将您的分析数据发送到正确的位置。复制产品 ID,因为我们稍后会使用它。
返回TapChallenge AppBuilder 项目(只需点击右上角的 TapChallengeApp,然后选择 TapChallege)。
最好在两个单独的选项卡中打开两个项目,因为系统会要求您在TapChallenge(AppBuilder 项目)和TapChallengeAnalytics(Analytics 项目)之间切换。
如果您丢失了其中任何一个,只需右键点击TapChallengeApp(在左上角)并选择在新选项卡中打开它。一旦TapChallengeApp打开,您可以切换到您需要使用的任何项目。
{N} Hello World 应用已经包含一个按钮和一个计数器,每次点击按钮时,计数器从 42 倒数到 0。<剧透> 一旦达到 0,用户会看到以下消息:“Hoorraaay!您解锁了 NativeScript 点击器成就!” </剧透>
我们将在此功能周围添加分析,以了解哪些事情是可能的。
现在所有项目都已到位,并且我们已导入 Analytics 模块,我们就可以开始编写代码了。
切换到TapChallenge选项卡。
打开app->app.js并将以下代码粘贴到application.start()之前。
这会向您的应用添加一个监视器对象,使您可以捕获应用使用情况分析。
application.on(application.launchEvent,
function
(e) {
var
NativeScriptMonitor = require(
'./NativeScriptMonitor'
).Monitor;
var
monitor =
new
NativeScriptMonitor({
productId:
'在此处输入您的产品密钥'
,
version:
'1.2.3'
});
monitor.start();
global.monitor = monitor;
});
application.on(application.exitEvent,
function
(args) {
monitor.stop();
});
使用您从 TapChallengeAnalytics -> SDK -> 代码示例中复制的 productId 更新productId。
现在您应该能够构建应用并在您的设备上测试它。
如果应用运行,我们就可以开始了。
即使我们还没有做太多,Analytics 项目也应该很快包含有关您的设备、位置和应用版本的一些数据。只需等待 5 分钟即可更新。
切换到TapChallengeAnalytics选项卡,启用实时模式(请参阅以下说明)并准备惊叹吧:)。
请注意,默认情况下,报表显示过去四天内的数据。这排除了当前日期。这意味着默认设置不会显示您最近的交互。
要更改此设置,请点击日期(左上角)并选择实时模式。这将允许您查看当前的使用情况。
在查看数据时,请记住,设备上记录的内容与项目中显示的内容之间始终存在几分钟的延迟。
Analytics 项目的此部分是一个通用报表,它为您提供有关谁、在哪里以及使用什么设备使用您的应用的信息。
现在是时候开始提问了。查看哪些功能被使用最多、使用频率以及如何使用。
这就像调用monitor.trackFeature("featureName");一样简单。
因此,首先让我们记录点击事件。var
monitor = global.monitor;
var
monitor = global.monitor;
为了更深入地了解用户模式,我们可以捕获有多少人开始、到达中间并完成 42 次点击挑战。
只需在第一个trackFeature调用后添加以下代码
switch
(
this
.counter) {
case
42:
monitor.trackFeature(
"challenge.started"
);
break
;
case
22:
monitor.trackFeature(
"challenge.midway"
);
break
;
case
1:
monitor.trackFeature(
"challenge.completed"
);
break
;
}
重新部署应用以使更改生效(我假设您正在 使用 LiveSync 来帮助您完成此操作)。然后运行几次。
切换到TapChallengeAnalytics选项卡。转到功能报表->功能使用并查看报表(您可能仍然需要等待大约 5 分钟才能开始看到结果)。
下一步,我们可以使用值增强功能跟踪,以了解事件发生的条件。
这非常简单,只需调用monitor.trackFeatureValue("featureName", value);即可。
让我们首先捕获有关何时使用应用的信息。
切换到TapChallenge选项卡并打开main-view-model.js。
在function HelloWorldModel() {内部添加以下代码
var
d =
new
Date();
var
hour = d.getHours();
monitor.trackFeatureValue(
"favourite.Hour"
, hour);
它应该如下所示
function
HelloWorldModel() {
_super.call(
this
);
this
.counter = 42;
this
.set(
"message"
,
this
.counter +
" taps left"
);
var
d =
new
Date();
var
hour = d.getHours();
monitor.trackFeatureValue(
"favourite.Hour"
, hour);
}
重新部署应用程序并运行几次。为了获得不同的值,您可以更改设备上的时间或通过代码更改小时。
切换到**TapChallengeAnalytics**选项卡。转到**功能报告 -> 功能值**。
默认情况下,基于值的报告不会显示任何统计信息。您必须通过配置间隔来配置它们。
展开**favourite.Hour**报告。点击**配置**。在左侧的文本框中输入3,然后点击**添加**。对6、9、12、15、18和21执行相同的操作。完成后,点击**设置间隔**生成一个全新的报告。
最后一种技术是基于时间的特征跟踪。它可以用于衡量流程完成所需的时间,或者用户响应或完成任务所需的时间。
时间跟踪由两个函数调用组成:**monitor.trackFeatureStart("featureName");** 和 **monitor.trackFeatureStop("featureName");**
切换到TapChallenge选项卡。
让我们更新**main-view-model.js**中的switch语句,以衡量用户完成挑战所需的时间。
switch
(
this
.counter) {
case
42:
monitor.trackFeature(
"challenge.started"
);
monitor.trackFeatureStart(
"userSpeed.challengeComplete"
);
break
;
case
22:
monitor.trackFeature(
"challenge.midway"
);
break
;
case
1:
monitor.trackFeature(
"challenge.completed"
);
monitor.trackFeatureStop(
"userSpeed.challengeComplete"
);
break
;
}
重新部署应用程序并尝试完成挑战几次。
切换到**TapChallengeAnalytics**选项卡。转到**功能报告 -> 功能计时**。
就像基于值的报告一样,您必须配置间隔才能查看结果。
请注意,默认单位是毫秒,因此要创建5、15和30秒的间隔,我们需要输入5000、15000和30000。
我们还可以更改报告中显示的单位。
点击并选择设置。
为了以秒为单位显示我们的报告,我们需要将**比例**更改为**0.001**并将单位名称更改为**sec**。
Telerik Analytics使用点符号,它使您可以完全控制Analytics仪表板的类别、组和结构。
您可以将功能组合在多个级别,例如Menu.Save.PDF + Menu.Save.JPG,然后在每个级别查看结果。
为功能跟踪标签想出合适的名称可能很棘手。但是,就像一个好的函数名称一样,想出一些有意义且易于理解的内容非常重要。
拼图的最后一块是异常跟踪。在我看来,仅此一项功能就值得在您的移动应用程序中设置Analytics。
想象一下,必须从位于不同城市(甚至国家/地区)的某人的智能设备中获取错误报告。您是否会将错误保存到日志文件中,然后向某人解释如何找到该文件并将其通过电子邮件发送给您?虽然这种方法可能适用于一些小型桌面应用程序,但对于移动应用程序来说,这是一个大大的**错误!**
但不要绝望。使用Analytics捕获异常信息非常简单。
只需在可能失败的代码周围添加try和catch子句(老实说,即使您没有使用分析,也应该这样做:P)。当发生异常时,只需调用**monitor.trackException(exceptionObject, "your message");**
切换到TapChallenge选项卡。
为了进行测试,在tapAction函数的底部添加以下代码(仍然位于老式的**main-view-model.js**中)。运行应用程序并疯狂点击,直到点击次数超过42次。
if
(
this
.counter < 0) {
alert(
"too many clicks"
);
try
{
throw
new
Error(
"Too many clicks"
);
}
catch
(ex) {
monitor.trackException(ex,
"Failed while clicking"
);
}
}
切换到**TapChallengeAnalytics**选项卡。转到**开发者报告 -> 异常**。
点击**案例**列中的**1**。这将带您到显示异常详细信息的屏幕。在这里,您可以看到堆栈跟踪和其他信息,例如此异常发生的次数、在多少个不同版本中发生以及受影响的用户数量。
这对于确定问题所在非常有用(例如,**异常数量=300**和**受影响用户=200**,这意味着这是一个影响许多人的问题)。
作为奖励,您可以使用Analytics报告所有未处理的错误。
最好的方法是将异常跟踪添加到应用程序未捕获错误事件。
切换到**TapChallenge**选项卡。打开app.js并在**application.start();**之前粘贴以下代码。
application.on(application.uncaughtErrorEvent,
function
(args) {
var
exception;
if
(args.android)
exception = args.android;
else
if
(args.ios)
exception = args.ios;
monitor.trackException(exception,
"Uncaught exception"
);
});
现在您的应用程序应该能够报告即使是意外错误。
在{N} 1.2中,**未捕获错误事件**仅适用于iOS。它将在1.3版本中为Android启用。
我们已在master中实现了它。如果您喜欢在早餐前看一些C++,可以去看看。