sunLoadingImage
whowedImag
decoration left 1
decoration left 2
transhome
transprojects
transgallery
transarticles
decoration rigth
English
Українська
Show/Hide search bar
black cat logo variable logo
[15 Лис 2013]

Стеження за С++ програмою з допомогою
Google Analytics та Qt

З допомогою Google Analytics можна відслідковувати відвідуваність сайтів чи програм для мобільних телефонів. Також цей сервіс можна використати для аналізу використання десктопних програм. Наведений код показує як повідомити Google Analytics про використання програми написаної на С++ з використанням бібліотеки Qt. Перше, що треба зробити - зареєструвати акаунт в Google Analytics і додати нову власність. Для відслідковування десктопної програми можна створити власність типу веб-сторінка чи мобільний додаток. Від вибору типу власності залежать параметри запиту, який потрібно відсилати до Google Analytics. Наведений код відсилає запит до власності з типом веб-сторінка. Після реєстрації власності стає доступним ідентифікатор власності типу UA-12345678-1. Його необхідно використати в запиті.
Ініціалізація менеджера запитів:
void Analytics::initialize()
{
    // Створити менеджер запитів
    m_manager = new QNetworkAccessManager(this);
    // Коли менеджер запитів отримує відповідь - викликати слот slot_receive()
    QObject::connect(m_manager, SIGNAL(finished(QNetworkReply *)),
                     this, SLOT(slot_receive(QNetworkReply *)));

    // Відсилати запит до Google Analytics доки програма запущена
    QTimer * timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(slot_requestAnalyticsView()));
    timer->start(5 * 60 * 1000); // висилати запит кожні 5 хвилин
    slot_requestAnalyticsView(); // відіслати перший запит
}
Запит до Google Analytics (про параметри запиту можна дізнатися тут):
void Analytics::slot_requestAnalyticsView()
{
    // створити запит і задати URL одержувача
    QNetworkRequest request;
    QUrl host("http://www.google-analytics.com/collect");
    request.setUrl(host);
    request.setHeader(QNetworkRequest::ContentTypeHeader,
                      "application/x-www-form-urlencoded");

    // налаштувати параметри запиту
    QString requestParams;
    requestParams += "v=1"; // версія протоколу
    requestParams += "&t=pageview"; // тип запиту
    requestParams += "&tid=UA-12345678-1"; // ідентифікатор Google Analytics
    requestParams += "&cid=" + getMacAddress(); // ідентифікатор користувача
    requestParams += "&dp=ApplicationName"); // сторінка чи назва програми
    requestParams += "&ul=" + QLocale::system().name(); // мова

    // вислати запит методом post
    m_manager->post(request, requestParams.toStdString().c_str());
}
Отримання відповіді від Google Analytics:
void Analytics::slot_receive(QNetworkReply * reply)
{
     // Вивести інформацію про відповідь
    qDebug()<<"RequestUrl:"<request().url();
    qDebug()<<"Status:"<attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    qDebug()<<"Error:"<error();
    QByteArray bytes=reply->readAll();
    qDebug()<<"Contents" << QString::fromUtf8(bytes.data(), bytes.size());
}



Sun and Black Cat- Ігор Дихта (igor dykhta email) © 2007-2014