首页 文章

使用Google Analytics跟踪桌面应用

提问于
浏览
2

我想跟踪一个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

    Qmonix分析也有c++ client .

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

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

  • 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有关 .

  • 0

    这适合我 . 我看到的唯一区别是我使用“text / plain” .

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

    希望能帮助到你 .

  • -2

    我想做同样的事情来跟踪我的共享软件的免费和付费安装 . 我最终创建了自己的库,我也给了其他可能想从中受益的开发人员 . 只是一个小DLL,没有.net或其他库的依赖 . https://www.starmessagesoftware.com/softmeter/how-it-works-application-analytics

  • 0

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

相关问题