Пример #1
0
        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);
        }
Пример #2
0
        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);
        }