2009-12-04 9 views
10

मैं अपने एप्लिकेशन के उपयोग के बारे में कुछ आंकड़े इकट्ठा करना चाहता हूं, और चूंकि मेरे पास पहले से ही Google Analytics में वेब आंकड़े हैं, मैंने सोचा कि यह होगा अच्छा अगर मैं ऐप से अनुरोध भेज सकता हूं जो Analytics में हिट का कारण बनता है, उदाहरण के लिए।गैर-वेब एप्लिकेशन से Google Analytics लॉग का कारण बनें (उदाहरण के लिए वेब क्लाइंट के माध्यम से)

/app/v1.0/debug

यह मुझे देखने के लिए कितनी बार मेरी एप्लिकेशन को शुरू कर रहा है (या जो भी) की अनुमति होगी।

मैंने ऑनलाइन एक नज़र डाली और लोगों को कुछ समान काम करने वाले कुछ उदाहरण मिले (कुछ काम करने के लिए जावास्क्रिप्ट अक्षम हो रहा है, और अन्य मेरे जैसा ही कर रहे हैं), लेकिन सी # में कोई नहीं। के रूप में मैं कर सकता मैं के रूप में सबसे अच्छा के ऊपर कोड अनुवाद, लेकिन मैं इसे कई बार कहा है कुछ दिनों के पहले, और कुछ भी नहीं लॉग :(में दिखाया

// Send a hit to Google Analytics so we can track which versions are being used 
Random rnd = new Random(); 
int cookie = rnd.Next(10000000, 99999999); 
string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
    "?utmwv=4.3" + 
    "&utmn=" + rnd.Next(10000) + // Used only to stop browser caching 
    "&utmhn=myhost.com" + // Hostname 
    //"&utmhid=<random#>" + 
    "&utmr=-" + // Referer 
    "&utmp=/app/v0.4/DEBUG/Test" + // Requested page 
    "&utmac=UA-123456-7" + // Google Analytics ID 
    "&utmcc=__utma%3D" + cookie + "3B%2B__utmz%3D" + cookie + "%3B"; 

using (var client = new WebClient()) 
{ 
    client.DownloadData(statsRequest); 
} 

किसी को क्या बनाने के लिए ऐसा करने के लिए पता है यह काम? अगर मैं कुकी को किसी भी तरह से स्टोर कर सकता हूं तो यह बेहतर होगा, ताकि लोगों को कई बार ऐप चलाने पर "रिटर्निंग विज़िटर" माना जा सके, लेकिन यह कम महत्वपूर्ण है।

उत्तर

3

मैं नगण्य का एक बहुत कुछ के साथ विज्ञापन में इस काम के पाने में कामयाब रहे :)

आईटी भी मदद करता है अगर आप फिल्टर है कि अपनी खुद की अनुरोध (आईपी) के द्वारा प्रवेश करने के लिए नहीं है जब परीक्षण एनालिटिक्स का कारण बनता है को दूर;)

Random rnd = new Random(); 

long timestampFirstRun, timestampLastRun, timestampCurrentRun, numberOfRuns; 

// Get the first run time 
timestampFirstRun = Settings.Default.FirstRun; 
timestampLastRun = Settings.Default.LastRun; 
timestampCurrentRun = GetEpochTime(); 
numberOfRuns = Settings.Default.NumberOfRuns + 1; 

// If we've never run before, we need to set the same values 
if (numberOfRuns == 1) 
{ 
    timestampFirstRun = timestampCurrentRun; 
    timestampLastRun = timestampCurrentRun; 
} 

// Some values we need 
string domainHash = "123456789"; // This can be calcualted for your domain online 
int uniqueVisitorId = rnd.Next(100000000, 999999999); // Random 
string source = "source"; 
string medium = "medium"; 
string sessionNumber = "1"; 
string campaignNumber = "1"; 
string culture = Thread.CurrentThread.CurrentCulture.Name; 
string screenRes = Screen.PrimaryScreen.Bounds.Width + "x" + Screen.PrimaryScreen.Bounds.Height; 

#if DEBUG 
string requestPath = "%2FAppStartup%2FDEBUG%2F" + SettingsWrapper.CurrentVersion.ToString(2); 
string requestName = "AppStartup%20(Debug)%20v" + SettingsWrapper.CurrentVersion.ToString(2); 
#else 
string requestPath = "%2FAppStartup%2FRELEASE%2F" + SettingsWrapper.CurrentVersion.ToString(2); 
string requestName = "AppStartup%20v" + SettingsWrapper.CurrentVersion.ToString(2); 
#endif 

string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
    "?utmwv=4.6.5" + 
    "&utmn=" + rnd.Next(100000000, 999999999) + 
    "&utmhn=hostname.mydomain.com" + 
    "&utmcs=-" + 
    "&utmsr=" + screenRes + 
    "&utmsc=-" + 
    "&utmul=" + culture + 
    "&utmje=-" + 
    "&utmfl=-" + 
    "&utmdt=" + requestName + 
    "&utmhid=1943799692" + 
    "&utmr=0" + 
    "&utmp=" + requestPath + 
    "&utmac=UA-123656-7" + // Account number 
    "&utmcc=" + 
     "__utma%3D" + domainHash + "." + uniqueVisitorId + "." + timestampFirstRun + "." + timestampLastRun + "." + timestampCurrentRun + "." + numberOfRuns + 
     "%3B%2B__utmz%3D" + domainHash + "." + timestampCurrentRun + "." + sessionNumber + "." + campaignNumber + ".utmcsr%3D" + source + "%7Cutmccn%3D(" + medium + ")%7Cutmcmd%3D" + medium + "%7Cutmcct%3D%2Fd31AaOM%3B"; 

using (var client = new WaveWebClient()) 
{ 
    client.DownloadData(statsRequest); 
} 

// Now save some of the values 
Settings.Default.NumberOfRuns = numberOfRuns; 
Settings.Default.FirstRun = timestampFirstRun; 
Settings.Default.LastRun = timestampCurrentRun; 
Settings.Default.Save(); 
+1

Haha, मैं कि मारा एक ही समस्या .. दीवार के खिलाफ मेरे सिर को कई दिनों तक टक्कर लगी, उन सभी चरों की जांच कर रहा था, फिर अंत में याद किया गया कि मेरे पास हमारे यातायात को बाहर करने के लिए एक फ़िल्टर सेटअप था :) –

+0

क्या आप कुकीज़ को संग्रहीत कर रहे हैं? मैं कुकीज़ संग्रहीत कर रहा हूं और ऐसा लगता है कि मैं काम कर रहा हूं, मैं utma और utmz कुकीज़ संग्रहीत करता हूं और बाद में उनका पुनः उपयोग करता हूं। –

+0

एकमात्र चीजें जिन्हें मैंने सहेजा था, कोड में उल्लेख किया गया है (फर्स्टरुन, लास्टरुन, नंबरऑफ्रन्स)। ऐसा लगता है कि काम करना प्रतीत होता था, हालांकि मैंने कोड को खोलने के बाद इसे बाहर निकाला, इसलिए यह बहुत लंबा नहीं रहा। –

0

आप एक स्नफ़फर चला सकते हैं वायरशर्क को अपने ऐप से जीआईएफ अनुरोध कैप्चर करने के लिए और इसे 'वास्तविक' Analytics पिंग के साथ तुलना करने के लिए तुलना करें। वैकल्पिक रूप से, अपने ऐप में यादृच्छिक __utm.gif अनुरोध को यादृच्छिक रूप से utmn के साथ अनुरोध करें, कुछ अनुरोध करें, और देखें कि पृष्ठदृश्य दिखाए गए हैं।

2

एक प्रोजेक्ट जिसे मैंने ओपन सोर्स के तहत जारी किया है, को नेट एनालिटिक्स से .NET देशी कोड से कोड के माध्यम से पृष्ठ दृश्यों, घटनाओं आदि के लिए आसान एकीकरण की अनुमति मिलती है।

यह तुम क्या इसके बाद के संस्करण को प्राप्त करने के सिवाय यह शीर्ष

पर एक अच्छा ग # आवरण यह GaDotNet कहा जाता है और यहां पाया जा सकता के रूप में कार्य कोशिश कर रहे हैं के लिए इसी तरह काम करता है: http://www.diaryofaninja.com/projects/details/ga-dot-net

+0

संपादन के लिए धन्यवाद! मेरी n00b उंगलियों – Doug

+0

रास्ते में मिला Nuget पर धक्का देने के लिए कोई योजना? – abatishchev

संबंधित मुद्दे