示例#1
0
    private string AddCampaignParameters <T>(HitBuilder <T> builder)
    {
        if (!trackingCodeSet)
        {
            return("");
        }
        String url = "";

        url += AddOptionalMPParameter(Fields.CAMPAIGN_NAME, builder.GetCampaignName());
        url += AddOptionalMPParameter(Fields.CAMPAIGN_SOURCE, builder.GetCampaignSource());
        url += AddOptionalMPParameter(Fields.CAMPAIGN_MEDIUM, builder.GetCampaignMedium());
        url += AddOptionalMPParameter(Fields.CAMPAIGN_KEYWORD, builder.GetCampaignKeyword());
        url += AddOptionalMPParameter(Fields.CAMPAIGN_CONTENT, builder.GetCampaignContent());
        url += AddOptionalMPParameter(Fields.CAMPAIGN_ID, builder.GetCampaignID());
        url += AddOptionalMPParameter(Fields.GCLID, builder.GetGclid());
        url += AddOptionalMPParameter(Fields.DCLID, builder.GetDclid());

        if (!String.IsNullOrEmpty(url))
        {
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.VERBOSE))
            {
                Debug.Log("Added campaign parameters to hit. url:" + url);
            }
        }
        return(url);
    }
示例#2
0
    private string AddCustomVariables <T>(HitBuilder <T> builder)
    {
        if (!trackingCodeSet)
        {
            return("");
        }
        String url = "";

        foreach (KeyValuePair <int, string> entry in builder.GetCustomDimensions())
        {
            if (entry.Value != null)
            {
                url += Fields.CUSTOM_DIMENSION.ToString() + entry.Key + "=" +
                       WWW.EscapeURL(entry.Value.ToString());
            }
        }
        foreach (KeyValuePair <int, float> entry in builder.GetCustomMetrics())
        {
            if (entry.Value != null)
            {
                url += Fields.CUSTOM_METRIC.ToString() + entry.Key + "=" +
                       WWW.EscapeURL(entry.Value.ToString());
            }
        }

        if (!String.IsNullOrEmpty(url))
        {
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.VERBOSE))
            {
                Debug.Log("Added custom variables to hit.");
            }
        }
        return(url);
    }
示例#3
0
    public void InitializeTracker()
    {
        if (String.IsNullOrEmpty(trackingCode))
        {
            Debug.Log("No tracking code set - hits will not be set");
            trackingCodeSet = false;
            return;
        }
        if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.INFO))
        {
            Debug.Log("Platform is not Android or iOS - " +
                      "hits will be sent using measurement protocol.");
        }
        screenRes = Screen.width + "x" + Screen.height;
        clientId  = SystemInfo.deviceUniqueIdentifier;
        string language = Application.systemLanguage.ToString();

        optOut = false;
#if !UNITY_WP8
        CultureInfo[] cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures);
        foreach (CultureInfo info in cultureInfos)
        {
            if (info.EnglishName == Application.systemLanguage.ToString())
            {
                language = info.Name;
            }
        }
#endif
        try
        {
            url = "https://www.google-analytics.com/collect?v=1"
                  + AddRequiredMPParameter(Fields.LANGUAGE, language)
                  + AddRequiredMPParameter(Fields.SCREEN_RESOLUTION, screenRes)
                  + AddRequiredMPParameter(Fields.APP_NAME, appName)
                  + AddRequiredMPParameter(Fields.TRACKING_ID, trackingCode)
                  + AddRequiredMPParameter(Fields.APP_ID, bundleIdentifier)
                  + AddRequiredMPParameter(Fields.CLIENT_ID, clientId)
                  + AddRequiredMPParameter(Fields.APP_VERSION, appVersion);
            if (anonymizeIP)
            {
                url += AddOptionalMPParameter(Fields.ANONYMIZE_IP, 1);
            }
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.VERBOSE))
            {
                Debug.Log("Base URL for hits: " + url);
            }
        }
        catch (Exception)
        {
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.WARNING))
            {
                Debug.Log("Error building url.");
            }
        }
    }
示例#4
0
    private void SendGaHitWithMeasurementProtocol(string url)
    {
        if (String.IsNullOrEmpty(url))
        {
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.WARNING))
            {
                Debug.Log("No tracking code set for 'Other' platforms - hit will not be sent.");
            }
            return;
        }
        if (dryRun || optOut)
        {
            if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.WARNING))
            {
                Debug.Log("Dry run or opt out enabled - hits will not be sent.");
            }
            return;
        }
        if (startSessionOnNextHit)
        {
            url += AddOptionalMPParameter(Fields.SESSION_CONTROL, "start");
            startSessionOnNextHit = false;
        }
        else if (endSessionOnNextHit)
        {
            url += AddOptionalMPParameter(Fields.SESSION_CONTROL, "end");
            endSessionOnNextHit = false;
        }
        // Add random z to avoid caching
        string newUrl = url + "&z=" + UnityEngine.Random.Range(0, 500);

        if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.VERBOSE))
        {
            Debug.Log(newUrl);
        }
        if (GoogleAnalyticsV4.instance.RunSynchronously)
        {
            HandleWWWSynchronously(UnityWebRequest.Post(newUrl, ""));
        }
        else
        {
            GoogleAnalyticsV4.instance.StartCoroutine(HandleWWW(UnityWebRequest.Post(newUrl, "")));
        }
    }
示例#5
0
 private string AddRequiredMPParameter(Field parameter, object value)
 {
     if (!trackingCodeSet)
     {
         return("");
     }
     else if (value == null)
     {
         if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.WARNING))
         {
             Debug.LogWarning("Value was null for required parameter " + parameter + ". Hit cannot be sent");
         }
         throw new ArgumentNullException();
     }
     else
     {
         return(parameter + "=" + WWW.EscapeURL(value.ToString()));
     }
 }
示例#6
0
 private void LogHandleWWWResult(UnityWebRequest request)
 {
     if (request.isNetworkError || request.isHttpError)
     {
         Debug.LogWarning("Google Analytics hit request failed with error "
                          + request.error);
     }
     else
     {
         if (request.responseCode == 200)
         {
             if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.INFO))
             {
                 Debug.Log("Successfully sent Google Analytics hit.");
             }
         }
         else if (GoogleAnalyticsV4.IsLogLevelEnough(DebugMode.WARNING))
         {
             Debug.LogWarning("Google Analytics hit request rejected with " +
                              "status code " + request.responseCode);
         }
     }
 }