using UnityEngine; using System; using System.Collections.Generic; public static class Tenjin { public delegate void DeferredDeeplinkDelegate(Dictionary deferredLinkData); //create dictionary of instances of tenjin with API keys private static Dictionary _instances = new Dictionary(); // App Tracking Transparency callback public static Action authorizationStatusDelegate = null; //return instance with specific api key public static BaseTenjin getInstance(string apiKey){ string instanceKey = apiKey; if (!_instances.ContainsKey (apiKey)){ _instances.Add(apiKey, createTenjin(apiKey, null, 0)); } return _instances[instanceKey]; } public static BaseTenjin getInstanceWithSharedSecret(string apiKey, string sharedSecret){ string instanceKey = apiKey + "." + sharedSecret; if (!_instances.ContainsKey(instanceKey)){ _instances.Add(instanceKey, createTenjin(apiKey, sharedSecret, 0)); } return _instances[instanceKey]; } public static BaseTenjin getInstanceWithAppSubversion(string apiKey, int appSubversion){ string instanceKey = apiKey + "." + appSubversion; if (!_instances.ContainsKey(instanceKey)){ _instances.Add(instanceKey, createTenjin(apiKey, null, appSubversion)); } return _instances[instanceKey]; } public static BaseTenjin getInstanceWithSharedSecretAppSubversion(string apiKey, string sharedSecret, int appSubversion){ string instanceKey = apiKey + "." + sharedSecret + "." + appSubversion; if (!_instances.ContainsKey(instanceKey)){ _instances.Add(instanceKey, createTenjin(apiKey, sharedSecret, appSubversion)); } return _instances[instanceKey]; } private static BaseTenjin createTenjin(string apiKey, string sharedSecret, int appSubversion){ GameObject tenjinGameObject = new GameObject("Tenjin"); tenjinGameObject.hideFlags = HideFlags.HideAndDontSave; UnityEngine.Object.DontDestroyOnLoad(tenjinGameObject); #if UNITY_ANDROID && !UNITY_EDITOR BaseTenjin retTenjin = tenjinGameObject.AddComponent(); #elif UNITY_IPHONE && !UNITY_EDITOR BaseTenjin retTenjin = tenjinGameObject.AddComponent(); #else BaseTenjin retTenjin = tenjinGameObject.AddComponent(); #endif if (!string.IsNullOrEmpty(sharedSecret) && appSubversion != 0) { retTenjin.InitWithSharedSecretAppSubversion(apiKey, sharedSecret, appSubversion); } else if (!string.IsNullOrEmpty(sharedSecret)) { retTenjin.InitWithSharedSecret(apiKey, sharedSecret); } else if (appSubversion != 0) { retTenjin.InitWithAppSubversion(apiKey, appSubversion); } else { retTenjin.Init(apiKey); } return retTenjin; } }