使用Google Analytics跟踪桌面应用

时间:2014-01-15 20:35:52

标签: analytics

我想跟踪一个c ++桌面应用。我在Google Analytics上创建了一个帐户,但我只看到了两个选项:跟踪网站或移动应用程序。我选择移动应用程序,我收到了像UA-xxxxxxxx-x这样的ID。现在,我想知道是否可以使用该ID跟踪桌面应用程序,以及如何跟踪。我在论坛上看到了几个例子,但每次指定一个网站,但在我的情况下,我没有任何网站,我只想获得有关我的应用程序的统计信息(使用的功能等等)。

之后,我尝试了我在Qt中找到的这个例子(当然没有最终值)

void Analytics::initialize()
{
    m_manager = new QNetworkAccessManager(this);
    // Call slot_receive() when reply is received
    QObject::connect(m_manager, SIGNAL(finished(QNetworkReply *)),
                     this, SLOT(slot_receive(QNetworkReply *)));

    // Send requests to Google Analytics while app is running
    QTimer * timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(slot_requestAnalyticsView()));
    timer->start(5 * 60 * 1000); // send requests every 5 minutes
    slot_requestAnalyticsView(); // send first request
} 


void Analytics::slot_requestAnalyticsView()
{
    // create request and set URL of receiver
    QNetworkRequest request;
    QUrl host("http://www.google-analytics.com/collect");
    request.setUrl(host);
    request.setHeader(QNetworkRequest::ContentTypeHeader,
                      "application/x-www-form-urlencoded");

    // setup parameters of request
    QString requestParams;
    requestParams += "v=1"; // version of protocol
    requestParams += "&t=pageview"; // type of request
    requestParams += "&tid="; // Google Analytics account
    requestParams += ANALYTICS_ID;

    requestParams += "&cid=";
    requestParams += getMacAddress(); // unique user identifier
    requestParams += "&dp=foobar"; // name of page (or app name)
    requestParams += "&ul=" + QLocale::system().name(); // language

    // send request via post method

    QString qPost = request.url().toString() + QString( "?" ) + requestParams;
    qDebug() << "\nPOST = " << qPost << "\n";
    m_manager->post(request, requestParams.toStdString().c_str());
} 

void Analytics::slot_receive(QNetworkReply * reply)
{
     // Output information about reply
    qDebug()<<"RequestUrl:" << reply->request().url();
    qDebug()<<"Status:" << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    qDebug()<<"Error:"<< reply->error();
    QByteArray bytes=reply->readAll();
    qDebug()<<"Contents" << QString::fromUtf8(bytes.data(), bytes.size());
} 

我将该代码放在我的应用上,但每次执行时,都会调用“slot_receive”并且我的Google Analytics统计页面上没有任何更改。

感谢。

5 个答案:

答案 0 :(得分:0)

c++ client分析也有Qmonix

目前,客户端仅适用于POSIX兼容的操作系统,并依赖于libcurl进行HTTP通信。但我相信它也可以轻松移植到支持其他平台。

简而言之,Qmonix是分析SDK,提供安装在您自己的计算机上的服务器软件,不涉及任何云服务。它使用HTTP进行通信。 Qmonix允许自定义事件,它不是特定于Web或移动的(尽管有JavaScript和Android库)。

答案 1 :(得分:0)

这对我有用。 我看到的唯一区别是我使用&#34; text / plain&#34;。

request.setHeader(QNetworkRequest::ContentTypeHeader, "text/plain");

希望它有所帮助。

答案 2 :(得分:0)

我刚刚评估了测量协议,并记得有这个问题。您可以选择移动应用程序,只需将ID用于桌面应用程序即可。 我已经构建了一个包装器(在.Net中),我在测试应用程序中使用它来发送一些遥测。要发布事件,我使用了这个字符串矩阵:

public static Dictionary<string, string> BuildEventPostString(TelemetryType type, string category, string action, string label,int? value = null)
{

    var result = new Dictionary<string, string> {

          { "v", "1" },
          { "tid", "UA-XXXXXXXX-2" },
          { "cid", "5ea42fb3-1af0-4f7b-XXXX-9a65f7bb84e8"},
          { "t", type.ToString() },
          { "ec", category },
          { "ea", action },
       };
    if (!string.IsNullOrEmpty(label))
    {
        result.Add("el", label);
    }
    if (value.HasValue)
    {
        result.Add("ev", value.ToString());
    }

    return result;
}

希望它有所帮助...测量协议使用起来有点棘手,因为它基本上是普通的HTTP,所以你需要围绕它构建一个包装器并公开你将在应用程序中使用的一些API。 我代表的公司有专门为此用例设计的SDK,包括C ++。 注意:我与Revulytics有关。

答案 3 :(得分:0)

我想做完全一样的事情来跟踪共享软件的免费安装与付费安装。 我最终制作了自己的库,也将其提供给其他可能希望从中受益的开发人员。 只是一个小DLL,不依赖.net或其他库。 https://www.starmessagesoftware.com/softmeter/how-it-works-application-analytics

答案 4 :(得分:-2)

Google Analytics主要针对网络和移动应用,可能不适用于您的桌面应用。您可以选择其他分析工具来制作,例如DeskMetrics,DeskAppTrack等。