如果使用 Google Analytics,则跟踪在 Phonegap 中创建的 Android 混合应用程序的应用程序使用情况和事件是一件容易的事情。我使用这个 Cordova 插件 实现了自己的解决方案。我原以为实施 Piwik 分析会同样容易。我从这个插件开始,然后按照说明编写了一个小测试应用程序。我使用了phonegap
jquery-mobile-starter
模板,其app.js
我按照以下几行进行了修改
$(document).on("deviceready", function()
{
deviceReadyDeferred.resolve();
alert('piwik track');
piwik.startTracker('https://example.com/piwik/piwik.php','siteID');
alert('Device Ready');
});
$(document).on("mobileinit", function ()
{
jqmReadyDeferred.resolve();
window.onerror = whenError;
$(document).on('pagecontainershow',pgcShow);
});
function pgcShow()
{
alert('Page Container now SHOWING!!');
$('#btn').click(doClick);
}
function doClick()
{
alert('Click Me');
piwik.trackEvent('click','I was clicked');
}
function whenError(e,u,l)
{
alert(e);
}
说明
我尝试进行足够的错误处理,以确保 Piwik 分析的失败不会归因于我的测试代码中的其他问题。
在 PageContainerShow 事件中,我连接了 index.html 页面上按钮的单击事件,以将
trackEvent
消息发送回我的 Piwik API(位于“https://mypiwikserver.com/piwik/piwik”)。 php'
siteID
是我为此目的而创建的 “网站” 的 ID,该 ID 从我的 Piwik 管理控制台上的 所有网站 列表中获取。
为了更好的措施,我修改了 Phonegap
config.xml
文件
访问原点=“*” 访问来源=“https://mypiwikserver.com”
完成所有这些后,我构建了应用程序,将其安装在我的 Android 手机上,打开它,然后转到我的 Piwik Web 控制台,希望看到记录在 Actions:Events 中的事件。然而,我发现它仍然顽固地保持空白。我没有注意到任何错误消息,并且我所有的各种
alerts
都按预期出现。我在这里做错了什么?
@DroidOS,
我假设您遇到了
white-list
问题。我无法确认这一点,但我已经阅读过(可能在白名单文档中),一些住宿是为*某些*谷歌网站提供的。
这个快速答案可能会让您快速解决问题。
替代方案是这种快速修复 - 但要知道这个快速修复消除了对
white-list
的所有需求。这会产生一个您可能不想绕过的安全问题。
快速修复将此添加到您的
config.xml
,仅用于PHONEGAP构建<preference name="phonegap-version" value="3.7.0" />
长答案是这样的:
从 Cordova/Phonegap 新手开发人员犯的主要错误中,您已经击中:
对于 #6 和 #7
使用 CLI 版本,如果您没有为您的平台分配版本,或者在“Phonegap Build”中如果您没有在 config.xml 中设置phonegap-version,您将获得最新版本。如果幸运的话,您的程序将按预期运行。如果你不幸运,你会得到一系列级联错误。
对我们所有人来说幸运的是,Holly Schinsky 写了一篇很好的博客文章来解释这一切:
Cordova/PhoneGap 版本混乱
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/
对于#10
这个相对*新*的要求意味着 – 要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用 [电子邮件受保护] 或更好的版本,则此要求将生效;包括 cli-5.1.1 和 cli-5.2.0。但是,如果您的版本是 4.0.0 之前的版本,比如说 3.5.0 或 3.7.0,那么您将不必必须添加白名单要求。
需要明确的是,“白名单”已经存在了一段时间,但插件和要求是非常新的。正如您所期望的,当添加“白名单”时,事实上的开放访问功能已被弃用。或者换句话说,事实上的开放访问功能已计划并计划被消除。此更改标志着删除开放访问功能的一步。
此外,内容安全策略(CSP)吸引了众多开发者 - 因为它的宣传太少了。 根据您的用途和您使用的 Phonegap 版本,CSP 需要进入您使用的每个 HTML 页面,就像您必须等待“deviceready”一样。然而,有些情况下根本不需要它。该文档对某些人来说有些混乱,请仔细阅读。 该文档隐藏在许多最新文档页面的底部。
相关链接
Phonegap 构建论坛:在 PGB 上升级到 cli-5.1.1 的注意事项,现在需要白名单