我正在使用Ionic Framework开发移动应用程序。我试图通过执行everything from scratch来运行Ionic Analytics。
根据this:
为了减少发送事件时的电量消耗,Ionic Analytics不会为每个跟踪的事件发送HTTP请求。相反,它将事件排入内存并每30秒发送一批事件。这30秒是调度间隔。
所以我假设每30秒我的分析数据应该同步。对于开发,我使用Ionic serve --lab
调试我的应用,并使用HTML5 Storage Manager All In One扩展程序跟踪我的localStorage使用情况。
当我正在使用我的应用程序并点击并进入不同的状态时,Ionic正在捕捉我的动作,在日志中我看到Ionic Analytics: enqueuing event to send later: Tap Object{...}
并且当我跟踪我的localStorage时,可用空间变得越来越小。由于这种情况持续了一段时间,最终我会达到大小配额限制,并且在我手动删除localStorage之前我会收到错误。
我的问题是为什么30秒间隔不会释放Ionic Analytics排队事件使用的空间?当我在浏览器上进行测试时,这种行为是否正常?在实际的移动设备上它是否可以接受?
答案 0 :(得分:1)
请参阅此错误报告https://github.com/driftyco/ionic-service-analytics/issues/27,其中据说数据每30秒清除一次,您可能还有其他空间占用空间。他们还建议降低门槛。
答案 1 :(得分:0)
我发现问题是什么,我担心这是我自己的错误。我发布了我做错的事情,也许有人不会犯同样的错误。
通常,对于Ionic Analytics,您在 app.js 文件中都有类似的内容:
.run(function($ionicPlatform, $ionicAnalytics) {
$ionicPlatform.ready(function() {
// Some code here that throw errors when you are on browser rather than real device
$ionicAnalytics.register();
});
})
所以基本上我在$ionicAnalytics.register();
之前有一些代码,只有在我使用真实设备进行测试时才有效,并且当我在浏览器中时出现错误,因此那些未被捕获的错误不允许$ionicAnalytics.register();
运行对于发送排队事件至关重要。所以我的事件队列只会增加,因为它从未将数据发送到服务器。我在这里吸取了教训,要么注释你为真实设备编写的内容,要么注意控制台中抛出的那些错误并解决它们。