2015-08-25 4 views
1

Je dois définir une dimension personnalisée du côté serveur, je tente cette demande:Set de dimension personnalisée dans la piscine mesure dans Google Analytics

http://www.google-analytics.com/collect?&v=1&tid=UA-XXXXXXXX-X&cid=111111111.111111111&t=all&cd1=MyCustomDimension

Dans la valeur « t » J'essaie aussi « l'événement "et" pageview "mais cela ne fonctionne pas.

J'ai créé cette classe pour faire la demande.

public static class GoogleAnalyticsServerSide 
{ 
    private static string googleURL = "http://www.google-analytics.com/collect"; 
    private static string googleVersion = "1"; 
    private static string googleTrackingID = "UA-XXXXXX-X"; 
    private static string googleClientID = "111111111.11111111"; 

    private static Dictionary<string, string> baseValues() 
    { 
     Dictionary<string, string> data = new Dictionary<string, string>(); 
     data.Add("v", googleVersion);   // Version. 
     data.Add("tid", googleTrackingID); // Tracking ID/Web property/Property ID. 
     data.Add("cid", googleClientID);  // Anonymous Client ID. 
     return data; 
    } 
    public static void TrackEvent(string category, string action, string label) 
    { 
     Dictionary<string, string> postData = new Dictionary<string, string>(); 
     postData = baseValues(); 
     postData.Add("t", "event"); 
     postData.Add("ec", category); 
     postData.Add("ea", action); 
     postData.Add("el", label); 
     Track(postData); 
    } 

    public static void TrackCustomDimension(string index, string value) 
    { 
     Dictionary<string, string> postData = new Dictionary<string, string>(); 
     postData = baseValues(); 
     postData.Add("t", "all"); 
     postData.Add("cd" + index, value); 
     Track(postData); 
    } 
    private static void Track(Dictionary<string, string> postData) 
    { 
     try 
     { 
      var request = (HttpWebRequest)WebRequest.Create(googleURL); 
      request.Method = "POST"; 

      var postDataString = postData 
       .Aggregate("", (data, next) => string.Format("{0}&{1}={2}", data, next.Key, 
                  HttpUtility.UrlEncode(next.Value))) 
       .TrimEnd('&'); 

      // set the Content-Length header to the correct value 
      request.ContentLength = Encoding.UTF8.GetByteCount(postDataString); 

      // write the request body to the request 
      using (var writer = new StreamWriter(request.GetRequestStream())) 
      { 
       writer.Write(postDataString); 
      } 

      try 
      { 
       var webResponse = (HttpWebResponse)request.GetResponse(); 
       if (webResponse.StatusCode != HttpStatusCode.OK) 
       { 
        throw new HttpException((int)webResponse.StatusCode, 
              "Google Analytics tracking did not return OK 200"); 
       } 
      } 
      catch (Exception ex) 
      { 

      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 

} 

La classe bien fonctionne parce que si j'utilise la méthode TrackEvent cela fonctionne. Je ne suis pas sûr si j'ai manqué quelque chose dans la demande de publication de Custom Dimension.

Merci d'avance.

Répondre

0

Je ne suis pas sûr de savoir ce que vous voulez dire par «ça ne marche pas» parce que ce que vous avez m'a l'air bien. Quoiqu'il en soit, vous devriez essayer d'utiliser le Measurement Protocol Hit Builder pour créer et valider vos résultats avant de les envoyer, juste pour vous assurer que tous les champs requis sont là.

Si vous souhaitez valider vos hits dans le code, vous devez envoyer vos hits au Measurement Protocol Validation Server pour vérifier leur validité avant de les envoyer à Google Analytics. Le générateur de hit utilise réellement cet outil sous le capot pour valider les hits.