Beispiel #1
0
        /// <summary>
        /// Start session, the function responsible for creating SessionID and gathering information about user and device
        /// </summary>
        /// <param name="entityKey">Result of the user's login, consist of entity info</param>
        /// <param name="playFabUserId">Result of the user's login, represent user ID</param>
        public void ClientSessionStart(EntityModels.EntityKey entityKey, string playFabUserId)
        {
            gameSessionID = Guid.NewGuid();

            entityInfo = entityKey;

            EventContents eventInfo = new EventContents();

            eventInfo.Name              = "client_session_start";
            eventInfo.EventNamespace    = eventNamespace;
            eventInfo.Entity            = entityInfo;
            eventInfo.OriginalTimestamp = DateTime.UtcNow;

            var payload = new Dictionary <string, object>
            {
                { "UserID", playFabUserId },
                { "DeviceType", SystemInfo.deviceType },
                { "DeviceModel", SystemInfo.deviceModel },
                { "OS", SystemInfo.operatingSystem },
                { "ClientSessionID", gameSessionID },
            };

            eventInfo.Payload = payload;
            eventsRequests.Enqueue(eventInfo);
        }
 /// <summary>
 /// Creates a default instance of an event.
 /// </summary>
 public PlayFabEvent()
 {
     this.EventType     = PlayFabEventType.Default;
     this.EventContents = new EventContents
     {
         EventNamespace = "com.playfab.events.default",
         Payload        = new OneDSEventData()
     };
 }
        /// <summary>
        /// Gather information about user's focus. Calculates interaction durations.
        /// Name mimics MonoBehaviour method, for ease of integration.
        /// </summary>
        /// <param name="isFocused">State of focus</param>
        public void OnApplicationFocus(bool isFocused)
        {
            EventContents eventInfo = new EventContents();

            eventInfo.Name           = "ClientFocusChange";
            eventInfo.EventNamespace = eventNamespace;
            eventInfo.Entity         = entityInfo;

            double focusStateDuration = 0.0;

            if (isFocused)
            {
                // start counting focus-on time
                focusOnDateTime = DateTime.UtcNow;

                // new id per focus
                focusId = Guid.NewGuid();

                if (!initialFocus)
                {
                    focusStateDuration = (DateTime.UtcNow - focusOffDateTime).TotalSeconds;

                    // this check safeguards from manual time changes while app is running
                    if (focusStateDuration < 0)
                    {
                        focusStateDuration = 0;
                    }
                }
            }
            else
            {
                focusStateDuration = (DateTime.UtcNow - focusOnDateTime).TotalSeconds;

                // this check safeguards from manual time changes while app is running
                if (focusStateDuration < 0)
                {
                    focusStateDuration = 0;
                }

                // start counting focus-off time
                focusOffDateTime = DateTime.UtcNow;
            }

            var payload = new Dictionary <string, object> {
                { "FocusID", focusId },
                { "FocusState", isFocused },
                { "FocusStateDuration", focusStateDuration },
                { "EventTimestamp", DateTime.UtcNow },
                { "ClientSessionID", gameSessionID },
            };

            eventInfo.Payload = payload;
            eventsRequests.Enqueue(eventInfo);

            initialFocus = false;
        }
        private async Task SendResultsToPlayFab(QosResult result)
        {
            var eventContents = new EventContents
            {
                Name = "qos_result",
                EventNamespace = "playfab.servers",
                Payload = QosResultFacade.CreateFrom(result)
            };

            var writeEventsRequest = new WriteEventsRequest
            {
                Events = new List<EventContents> {eventContents}
            };

            await WriteTelemetryAsync(writeEventsRequest);
        }
Beispiel #5
0
        private async Task SendSuccessfulQosResultsToPlayFab(object resultState)
        {
            var result        = (QosResult)resultState;
            var eventContents = new EventContents
            {
                Name           = "qos_result",
                EventNamespace = "playfab.servers",
                Payload        = QosResultPlayFabEvent.CreateFrom(result)
            };

            var writeEventsRequest = new WriteEventsRequest
            {
                Events = new List <EventContents> {
                    eventContents
                }
            };

            await eventsApi.WriteTelemetryEventsAsync(writeEventsRequest);
        }
        /// <summary>
        /// Sends events to server.
        /// </summary>
        public void Send()
        {
            if (PlayFabClientAPI.IsClientLoggedIn())
            {
                int eventsInTheBatch       = 0;
                WriteEventsRequest request = new WriteEventsRequest();
                request.Events            = new List <EventContents>();
                request.FlushToPlayStream = true;

                while ((eventsRequests.Count > 0) && (eventsInTheBatch < maxBatchSizeInEvents))
                {
                    EventContents eventInfo = eventsRequests.Dequeue();
                    request.Events.Add(eventInfo);

                    eventsInTheBatch++;
                }

                PlayFabEntityAPI.WriteEvents(request, EventSentSuccessfulCallback, EventSentErrorCallback);
            }
        }
Beispiel #7
0
        /// <summary>
        /// Sends events to server.
        /// </summary>
        public void Send()
        {
            if ((PlayFabClientAPI.IsClientLoggedIn()) && (isSending == false))
            {
                isSending = true;

                WriteEventsRequest request = new WriteEventsRequest();
                request.Events = new List <EventContents>();

                while ((eventsRequests.Count > 0) && (request.Events.Count < maxBatchSizeInEvents))
                {
                    EventContents eventInfo = eventsRequests.Dequeue();
                    request.Events.Add(eventInfo);
                }

                if (request.Events.Count > 0)
                {
                    PlayFabEntityAPI.WriteEvents(request, EventSentSuccessfulCallback, EventSentErrorCallback);
                }

                isSending = false;
            }
        }