195 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| // Inspired by: https://github.com/facebook/facebook-sdk-for-unity/blob/master/Facebook.Unity.Settings/FacebookSettings.cs
 | |
| 
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using UnityEditor;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace AdjustSdk
 | |
| {
 | |
|     public class AdjustSettings : ScriptableObject
 | |
|     {
 | |
|         private static AdjustSettings instance;
 | |
|         public const string AdjustSettingsExportPath = "Adjust/Resources/AdjustSettings.asset";
 | |
| 
 | |
|         [SerializeField]
 | |
|         private bool _iOSFrameworkAdSupport = true;
 | |
|         [SerializeField]
 | |
|         private bool _iOSFrameworkAdServices = false;
 | |
|         [SerializeField]
 | |
|         private bool _iOSFrameworkAppTrackingTransparency = false;
 | |
|         [SerializeField]
 | |
|         private bool _iOSFrameworkStoreKit = false;
 | |
|         [SerializeField]
 | |
|         private bool _androidPermissionInternet = true;
 | |
|         [SerializeField]
 | |
|         private bool _androidPermissionInstallReferrerService = true;
 | |
|         [SerializeField]
 | |
|         private bool _androidPermissionAdId = true;
 | |
|         [SerializeField]
 | |
|         private bool _androidPermissionAccessNetworkState = false;
 | |
|         [SerializeField]
 | |
|         private string _iOSUserTrackingUsageDescription;
 | |
|         [SerializeField]
 | |
|         private string _iOSUrlIdentifier;
 | |
|         [SerializeField]
 | |
|         private string[] _iOSUrlSchemes = new string[0];
 | |
|         [SerializeField]
 | |
|         private string[] _iOSUniversalLinksDomains = new string[0];
 | |
|         [SerializeField]
 | |
|         private string[] androidUriSchemes = new string[0];
 | |
|         [SerializeField]
 | |
|         private string _androidCustomActivityName;
 | |
| 
 | |
|         public static AdjustSettings Instance
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 instance = NullableInstance;
 | |
| 
 | |
|                 if (instance == null)
 | |
|                 {
 | |
|                     // Create AdjustSettings.asset inside the folder in which AdjustSettings.cs reside.
 | |
|                     instance = ScriptableObject.CreateInstance<AdjustSettings>();
 | |
|                     var guids = AssetDatabase.FindAssets(string.Format("{0} t:script", "AdjustSettings"));
 | |
|                     if (guids == null || guids.Length <= 0)
 | |
|                     {
 | |
|                         return instance;
 | |
|                     }
 | |
| 
 | |
|                     var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]).Replace("AdjustSettings.cs", "AdjustSettings.asset");
 | |
|                     // AdjustSettings.asset will be stored inside of the Adjust/Resources directory
 | |
|                     if (assetPath.StartsWith("Assets"))
 | |
|                     {
 | |
|                         // plugin located in Assets directory
 | |
|                         string rootDir = assetPath.Replace("/Adjust/Scripts/Editor/AdjustSettings.asset", "");
 | |
|                         string adjustResourcesPath = Path.Combine(rootDir, "Adjust/Resources");
 | |
|                         if (!Directory.Exists(adjustResourcesPath))
 | |
|                         {
 | |
|                             Directory.CreateDirectory(adjustResourcesPath);
 | |
|                         }
 | |
|                         assetPath = Path.Combine(rootDir, AdjustSettingsExportPath);
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         // plugin located in Packages folder
 | |
|                         string adjustResourcesPath = Path.Combine("Assets", "Adjust/Resources");
 | |
|                         if (!Directory.Exists(adjustResourcesPath))
 | |
|                         {
 | |
|                             Directory.CreateDirectory(adjustResourcesPath);
 | |
|                         }
 | |
|                         assetPath = Path.Combine("Assets", AdjustSettingsExportPath);
 | |
|                     }
 | |
| 
 | |
|                     AssetDatabase.CreateAsset(instance, assetPath);
 | |
|                 }
 | |
| 
 | |
|                 return instance;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public static AdjustSettings NullableInstance
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (instance == null)
 | |
|                 {
 | |
|                     var guids = AssetDatabase.FindAssets(string.Format("{0} t:ScriptableObject", "AdjustSettings"));
 | |
|                     if (guids == null || guids.Length <= 0)
 | |
|                     {
 | |
|                         return instance;
 | |
|                     }
 | |
|                     var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]);
 | |
|                     instance = (AdjustSettings)AssetDatabase.LoadAssetAtPath(assetPath, typeof(AdjustSettings));
 | |
|                 }
 | |
| 
 | |
|                 return instance;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public static bool iOSFrameworkAdSupport
 | |
|         {
 | |
|             get { return Instance._iOSFrameworkAdSupport; }
 | |
|             set { Instance._iOSFrameworkAdSupport = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool iOSFrameworkAdServices
 | |
|         {
 | |
|             get { return Instance._iOSFrameworkAdServices; }
 | |
|             set { Instance._iOSFrameworkAdServices = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool iOSFrameworkAppTrackingTransparency
 | |
|         {
 | |
|             get { return Instance._iOSFrameworkAppTrackingTransparency; }
 | |
|             set { Instance._iOSFrameworkAppTrackingTransparency = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool iOSFrameworkStoreKit
 | |
|         {
 | |
|             get { return Instance._iOSFrameworkStoreKit; }
 | |
|             set { Instance._iOSFrameworkStoreKit = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool androidPermissionInternet
 | |
|         {
 | |
|             get { return Instance._androidPermissionInternet; }
 | |
|             set { Instance._androidPermissionInternet = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool androidPermissionInstallReferrerService
 | |
|         {
 | |
|             get { return Instance._androidPermissionInstallReferrerService; }
 | |
|             set { Instance._androidPermissionInstallReferrerService = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool androidPermissionAdId
 | |
|         {
 | |
|             get { return Instance._androidPermissionAdId; }
 | |
|             set { Instance._androidPermissionAdId = value; }
 | |
|         }
 | |
| 
 | |
|         public static bool androidPermissionAccessNetworkState
 | |
|         {
 | |
|             get { return Instance._androidPermissionAccessNetworkState; }
 | |
|             set { Instance._androidPermissionAccessNetworkState = value; }
 | |
|         }
 | |
| 
 | |
|         public static string iOSUserTrackingUsageDescription
 | |
|         {
 | |
|             get { return Instance._iOSUserTrackingUsageDescription; }
 | |
|             set { Instance._iOSUserTrackingUsageDescription = value; }
 | |
|         }
 | |
| 
 | |
|         public static string iOSUrlIdentifier
 | |
|         {
 | |
|             get { return Instance._iOSUrlIdentifier; }
 | |
|             set { Instance._iOSUrlIdentifier = value; }
 | |
|         }
 | |
| 
 | |
|         public static string[] iOSUrlSchemes
 | |
|         {
 | |
|             get { return Instance._iOSUrlSchemes; }
 | |
|             set { Instance._iOSUrlSchemes = value; }
 | |
|         }
 | |
| 
 | |
|         public static string[] iOSUniversalLinksDomains
 | |
|         {
 | |
|             get { return Instance._iOSUniversalLinksDomains; }
 | |
|             set { Instance._iOSUniversalLinksDomains = value; }
 | |
|         }
 | |
| 
 | |
|         public static string[] AndroidUriSchemes
 | |
|         {
 | |
|             get { return Instance.androidUriSchemes; }
 | |
|             set { Instance.androidUriSchemes = value; }
 | |
|         }
 | |
| 
 | |
|         public static string AndroidCustomActivityName
 | |
|         {
 | |
|             get { return Instance._androidCustomActivityName; }
 | |
|             set { Instance._androidCustomActivityName = value; }
 | |
|         }
 | |
|     }
 | |
| }
 |