private void HandleSessionConfigurationCallback(JSONObject response) { if (response.Count > 0) { var parameters = response["parameters"]; if (parameters != null && parameters is JSONObject) { object dpWhitelist = null; (parameters as JSONObject).TryGetValue("dpWhitelist", out dpWhitelist); if (dpWhitelist != null && dpWhitelist is List <object> ) { whitelistDps = new ReadOnlyCollection <string>( (dpWhitelist as List <object>) .Select(e => e as string) .ToList()); } object eventsWhitelist = null; (parameters as JSONObject).TryGetValue("eventsWhitelist", out eventsWhitelist); if (eventsWhitelist != null && eventsWhitelist is List <object> ) { whitelistEvents = new ReadOnlyCollection <string>( (eventsWhitelist as List <object>) .Select(e => e as string) .ToList()); } object triggers = null; (parameters as JSONObject).TryGetValue("triggers", out triggers); if (triggers != null && triggers is List <object> ) { eventTriggers = (triggers as List <object>) .Select((e, i) => { var t = new EventTrigger(this, i, e as JSONObject, executionCountManager); // save persistent actions var p = t.GetResponse().GetOrDefault("parameters", new JSONObject()); if (p.GetOrDefault("ddnaIsPersistent", false)) { actionStore.Put(t, p); } return(t); }) .GroupBy(e => e.GetEventName()) .ToDictionary(e => e.Key, e => { var list = e.ToList(); list.Sort(); return(new ReadOnlyCollection <EventTrigger>(list)); }); } object imageCache = null; (parameters as JSONObject).TryGetValue("imageCache", out imageCache); if (imageCache != null && imageCache is List <object> ) { cacheImages = new ReadOnlyCollection <string>( (imageCache as List <object>) .Select(e => e as string) .ToList()); DownloadImageAssets(); } #if DDNA_SMARTADS SmartAds.Instance.RegisterForAdsInternal(response); #endif Logger.LogDebug("Session configured"); object cached = null; (parameters as JSONObject).TryGetValue("isCachedResponse", out cached); if (cached != null && cached is bool) { ddna.NotifyOnSessionConfigured(cached as bool? ?? false); } else { ddna.NotifyOnSessionConfigured(false); } } } else { Logger.LogWarning("Session configuration failed"); ddna.NotifyOnSessionConfigurationFailed(); HandleSessionConfigurationRetry(); } TriggerDefaultEvents(newPlayer); }