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); }
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); }
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."); } } }
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, ""))); } }
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())); } }
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); } } }