コード例 #1
0
        /// <summary>
        /// Initiates a session by setting begin_session
        /// </summary>
        public string BeginSession()
        {
            _lastSessionRequestTime = DateTime.Now;
            //if (ConsentModel.CheckConsent(FeaturesEnum.Sessions.ToString()))
            //{
            var requestParams =
                new Dictionary <string, object>
            {
                { "begin_session", 1 },
                { "ignore_cooldown", IgnoreSessionCooldown }
            };

            requestParams.Add("metrics", JsonConvert.SerializeObject(CountlyMetricModel.Metrics, Formatting.Indented,
                                                                     new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }));

            if (!string.IsNullOrEmpty(IPAddress))
            {
                requestParams.Add("ip_address", IPAddress);
            }

            _requestString = CountlyHelper.BuildRequest(requestParams);
            var response = CountlyHelper.GetResponse(_requestString);

            //Extend session only after session has begun
            _timer.Start();
            //}
            return(response);
        }
コード例 #2
0
        /// <summary>
        /// Ends a session by setting end_session
        /// </summary>
        public string EndSession()
        {
            //if (ConsentModel.CheckConsent(FeaturesEnum.Sessions.ToString()))
            //{
            var requestParams =
                new Dictionary <string, object>
            {
                { "end_session", 1 },
                { "session_duration", (DateTime.Now - _lastSessionRequestTime).Seconds },
                { "ignore_cooldown", IgnoreSessionCooldown.ToString().ToLower() }
            };

            requestParams.Add("metrics", JsonConvert.SerializeObject(CountlyMetricModel.Metrics, Formatting.Indented,
                                                                     new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }));
            _requestString = CountlyHelper.BuildRequest(requestParams);
            var response = CountlyHelper.GetResponse(_requestString);

            //Do not extend session after session ends
            _timer.Stop();
            _timer.Dispose();
            _timer.Close();
            //}
            return(response);
        }
コード例 #3
0
        /// <summary>
        /// Sends details regarding crash
        /// </summary>
        /// <param name="message"></param>
        /// <param name="stackTrace"></param>
        /// <param name="type"></param>
        public string SendCrashReport(string message, string stackTrace, LogType type, string customParams, bool nonfatal = false)
        {
            //if (ConsentModel.CheckConsent(FeaturesEnum.Crashes.ToString()))
            //{
            var model = CountlyExceptionDetailModel.ExceptionDetailModel;

            model.Error    = stackTrace;
            model.Name     = message;
            model.Nonfatal = nonfatal;
            model.Custom   = customParams;
#if UNITY_IOS
            model._manufacture = iPhone.generation.ToString(),
#endif
#if UNITY_ANDROID
            model.Manufacture = SystemInfo.deviceModel;
#endif
            var requestParams = new Dictionary <string, object>
            {
                { "crash", JsonConvert.SerializeObject(model, Formatting.Indented,
                                                       new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }) }
            };
            _requestString = CountlyHelper.BuildRequest(requestParams);
            return(CountlyHelper.GetResponse(_requestString));
            //}
        }
コード例 #4
0
        /// <summary>
        /// Ends a particular event
        /// </summary>
        /// <returns></returns>
        public bool End()
        {
            if (string.IsNullOrEmpty(Key))
            {
                throw new ArgumentNullException(Key, "Key is required.");
            }

            var addedEvent = Countly.TotalEvents.Where(evnt => Key.Equals(evnt.Key, StringComparison.OrdinalIgnoreCase))
                             .FirstOrDefault();

            if (string.IsNullOrEmpty(addedEvent.Key))
            {
                throw new Exception($"Event {Key} doesn't exists. Please add an event first.");
            }

            Duration = Duration ?? (DateTime.Now - addedEvent.Value).TotalMilliseconds;

            var requestParams =
                new Dictionary <string, object>
            {
                { "events", JsonConvert.SerializeObject(this, Formatting.Indented,
                                                        new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }) },
            };
            var requestString = CountlyHelper.BuildRequest(requestParams);

            CountlyHelper.GetResponse(requestString);

            //Removing the event
            Countly.TotalEvents.Remove(Key);

            return(true);
        }
コード例 #5
0
        internal static bool StartMultipleEvents(string events)
        {
            var requestParams =
                new Dictionary <string, object>
            {
                { "events", events },
            };
            var requestString = CountlyHelper.BuildRequest(requestParams);

            CountlyHelper.GetResponse(requestString);

            return(true);
        }
コード例 #6
0
        //#region Consents
        //public static bool ConsentGranted;

        //private static bool Consent_Sessions;
        //private static bool Consent_Events;
        //private static bool Consent_Location;
        //private static bool Consent_View;
        //private static bool Consent_Scrolls;
        //private static bool Consent_Clicks;
        //private static bool Consent_Forms;
        //private static bool Consent_Crashes;
        //private static bool Consent_Attribution;
        //private static bool Consent_Users;
        //private static bool Consent_Push;
        //private static bool Consent_StarRating;
        //private static bool Consent_AccessoryDevices;

        //#endregion

        #endregion

        #region Public Methods

        #region Initialization
        /// <summary>
        /// Initializes the countly
        /// </summary>
        /// <param name="serverUrl"></param>
        /// <param name="appKey"></param>
        /// <param name="deviceId"></param>
        public Countly(string serverUrl, string appKey, string deviceId = null)
        {
            ServerUrl = serverUrl;
            AppKey    = appKey;
            DeviceId  = deviceId ?? CountlyHelper.GenerateUniqueDeviceID();

            if (string.IsNullOrEmpty(ServerUrl))
            {
                throw new ArgumentNullException(serverUrl, "ServerURL is required.");
            }
            if (string.IsNullOrEmpty(AppKey))
            {
                throw new ArgumentNullException(appKey, "AppKey is required.");
            }
            //ConsentGranted = consentGranted;
        }
コード例 #7
0
        internal static bool StartMultipleEvents(List <CountlyEventModel> events)
        {
            var requestParams =
                new Dictionary <string, object>
            {
                { "events", JsonConvert.SerializeObject(events, Formatting.Indented,
                                                        new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }) },
            };
            var requestString = CountlyHelper.BuildRequest(requestParams);

            CountlyHelper.GetResponse(requestString);

            return(true);
        }
コード例 #8
0
        /// <summary>
        /// Extends a session by another 60 seconds
        /// </summary>
        public string ExtendSession()
        {
            _lastSessionRequestTime = DateTime.Now;
            //if (ConsentModel.CheckConsent(FeaturesEnum.Sessions.ToString()))
            //{
            var requestParams =
                new Dictionary <string, object>
            {
                { "session_duration", 60 },
                { "ignore_cooldown", IgnoreSessionCooldown.ToString().ToLower() }
            };

            requestParams.Add("metrics", JsonConvert.SerializeObject(CountlyMetricModel.Metrics, Formatting.Indented,
                                                                     new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }));
            _requestString = CountlyHelper.BuildRequest(requestParams);
            return(CountlyHelper.GetResponse(_requestString));
            //}
        }
コード例 #9
0
        internal bool ReportCustomEvent()
        {
            if (string.IsNullOrEmpty(Key))
            {
                throw new ArgumentNullException(Key, "Key is required.");
            }

            var requestParams =
                new Dictionary <string, object>
            {
                { "events", JsonConvert.SerializeObject(this, Formatting.Indented,
                                                        new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }) },
            };
            var requestString = CountlyHelper.BuildRequest(requestParams);

            CountlyHelper.GetResponse(requestString);

            return(true);
        }