IEnumerator PostWithResponse(string url, string bodyJsonString) { var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST); byte[] bodyRaw = Encoding.UTF8.GetBytes(bodyJsonString); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", Utils.SignString(bodyJsonString, GameSecret)); request.SetRequestHeader("GameID", GameID); yield return(request.SendWebRequest()); Log("Status Code: " + request.responseCode); Log("Body: " + request.downloadHandler.text); if (request.isNetworkError) { Log("Request Error"); } else { if (request.responseCode == 200) { try { var a = JsonUtility.FromJson <OpenResponse>(request.downloadHandler.text); if (a != null) { openRequestSucceded = true; openResponse = a; } } catch (Exception e) { Debug.Log(e); } } } openRequestWaiting = false; }
private IEnumerator InitSDK(bool isOldUser) { if (Utils.IsFileExists(OLD_ELEPHANT_FILE)) { isOldUser = true; } string savedConfig = Utils.ReadFromFile(REMOTE_CONFIG_FILE); userId = Utils.ReadFromFile(USER_DB_ID) ?? ""; Log("Remote Config From File --> " + savedConfig); var isUsingRemoteConfig = 0; openResponse = new OpenResponse(); if (savedConfig != null) { RemoteConfig.GetInstance().Init(savedConfig); openResponse.remote_config_json = savedConfig; } openRequestWaiting = true; openRequestSucceded = false; float startTime = Time.time; var realTimeBeforeRequest = DateTime.Now; RequestIDFAAndOpen(isOldUser); while (openRequestWaiting && (Time.time - startTime) < 5f) { yield return(null); } if (openRequestSucceded) { isUsingRemoteConfig = 1; } Log(JsonUtility.ToJson(openResponse)); var parameters = Params.New() .Set("real_duration", (DateTime.Now - realTimeBeforeRequest).TotalMilliseconds) .Set("game_duration", (Time.time - startTime) * 1000) .Set("is_using_remote_config", isUsingRemoteConfig) .CustomString(JsonUtility.ToJson(openResponse)); Elephant.Event("open_request", -1, parameters); RemoteConfig.GetInstance().Init(openResponse.remote_config_json); AdConfig.GetInstance().Init(openResponse.ad_config); Utils.SaveToFile(REMOTE_CONFIG_FILE, openResponse.remote_config_json); Utils.SaveToFile(USER_DB_ID, openResponse.user_id); currentSession.user_tag = RemoteConfig.GetInstance().GetTag(); if (onOpen != null) { if (openResponse.consent_required) { onOpen(true); } else { onOpen(false); } } else { Debug.LogWarning("ElephantSDK onOpen event is not handled"); } sdkIsReady = true; if (onRemoteConfigLoaded != null) { onRemoteConfigLoaded(); } }