public IEnumerator SendCoroutine() { Spil spil = GameObject.FindObjectOfType <Spil>(); platform = EditorUserBuildSettings.activeBuildTarget.ToString().Trim().ToLower(); #if UNITY_5_6_OR_NEWER bundleIdentifier = PlayerSettings.applicationIdentifier; #elif UNITY_5_3_OR_NEWER bundleIdentifier = PlayerSettings.bundleIdentifier; #endif AddDefaultParameters(); WWWForm requestForm = new WWWForm(); requestForm.AddField("name", eventName); requestForm.AddField("data", data.ToString()); requestForm.AddField("customData", !customData.IsNull ? customData.Print() : "{}"); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var time = (long)(DateTime.Now.ToUniversalTime() - epoch).TotalMilliseconds; requestForm.AddField("ts", time.ToString()); requestForm.AddField("queued", 0); if (Spil.Instance.GetPrivValue() > -1) { requestForm.AddField("priv", Spil.Instance.GetPrivValue()); } if (spil.EditorDebugMode) { requestForm.AddField("debugMode", Convert.ToString(spil.EditorDebugMode).ToLower()); } if (SpilUnityEditorImplementation.spilToken != null) { requestForm.AddField("spilToken", SpilUnityEditorImplementation.spilToken); } WWW request = new WWW( "https://apptracker.spilgames.com/v1/native-events/event/" + platform + "/" + Spil.BundleIdEditor + "/" + eventName, requestForm); yield return(request); SpilLogging.Log("Sending event: " + "Name: " + eventName + " \nData: " + data + " \nCustom Data: " + customData.Print() + " \nTimestamp: " + time); if (request.error != null && !request.error.Equals("")) { if (Spil.BundleIdEditor == null || Spil.BundleIdEditor.Equals("")) { SpilLogging.Error( "Spil Initialize might not have been called! Please make sure you call Spil.Initialize() at app start!"); } else if (request.responseHeaders != null && request.responseHeaders.Count > 0) { foreach (KeyValuePair <string, string> entry in request.responseHeaders) { if (entry.Key.Equals("STATUS")) { if (entry.Value.Contains("401")) { SocialLoginManager.ProcessUnauthorizedResponse(request.text); SpilLogging.Error("Unauthorized 401 event! Error: " + request.text); } else { SpilLogging.Error("Error getting data: " + request.error); SpilLogging.Error("Error getting data: " + request.text); } } } } else { SpilLogging.Error("Error getting data: " + request.error); SpilLogging.Error("Error getting data: " + request.text); } } else { JSONObject serverResponse = new JSONObject(request.text); SpilLogging.Log("Data returned: \n" + serverResponse); ResponseEvent.Build(serverResponse); } GameObject.Destroy(this); }
public static void Build(JSONObject response) { ResponseEvent responseEvent = Spil.MonoInstance.gameObject.AddComponent <ResponseEvent>(); responseEvent.eventName = response.GetField("name").str; if (response.HasField("type")) { responseEvent.type = response.GetField("type").str; } if (response.HasField("action")) { responseEvent.action = response.GetField("action").str; } if (response.HasField("data")) { responseEvent.data = response.GetField("data"); } if (responseEvent.type != null) { switch (responseEvent.type.ToLower().Trim()) { case "advertisement": AdvertisementResponse.ProcessAdvertisementResponse(responseEvent); break; case "overlay": OverlayResponse.ProcessOverlayResponse(responseEvent); break; case "gameconfig": ConfigResponse.ProcessConfigResponse(responseEvent); break; case "packages": PackagesResponse.ProcessPackagesResponse(responseEvent); break; case "notification": break; case "gamedata": GameDataResponse.ProcessGameDataResponse(responseEvent); break; case "promotions": PromotionsResponse.ProcessPromotionResponse(responseEvent); break; case "userdata": UserDataResponse.ProcessUserDataResponse(responseEvent); break; case "playerdata": PlayerDataResponse.ProcessPlayerDataResponse(responseEvent); break; case "gamestate": GameStateResponse.ProcessGameStateResponse(responseEvent); break; case "reward": RewardResponse.ProcessRewardResponse(responseEvent); break; case "liveevent": LiveEventResponse.ProcessLiveEventResponse(responseEvent); break; case "authentication": SocialLoginResponse.ProcessSocialLoginResponse(responseEvent); break; } } GameObject.Destroy(responseEvent); }