/// <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); }
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); } }
/// <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; } }