using System;
using UnityEngine;
using UnityEngine.Serialization;
namespace JustTrack
{
///
/// Defines the integration mode for Facebook Audience Network.
///
public enum FacebookAudienceNetworkIntegration
{
///
/// No integration with Facebook Audience Network.
///
NoIntegration = 0,
///
/// Unity-based integration with Facebook Audience Network.
///
UnityIntegration = 1,
///
/// Native platform integration with Facebook Audience Network.
///
NativeIntegration = 2,
}
///
/// Configuration settings for iOS tracking permissions and integrations.
///
[Serializable]
#pragma warning disable SA1401 // Fields should be private (required for Unity serialization)
#pragma warning disable SA1300 // Element should begin with an uppercase letter (public API)
public struct iOSTrackingSettings
#pragma warning restore SA1300
{
///
/// Whether to request tracking permission from the user on iOS.
///
[SerializeField]
[FormerlySerializedAs("requestTrackingPermission")]
public bool RequestTrackingPermission;
///
/// Whether to use a custom advertising attribution report endpoint.
///
[SerializeField]
[FormerlySerializedAs("useCustomAdvertisingAttributionReportEndpoint")]
public bool UseCustomAdvertisingAttributionReportEndpoint;
///
/// The description text shown to users when requesting tracking permission.
///
[SerializeField]
[FormerlySerializedAs("trackingPermissionDescription")]
public string TrackingPermissionDescription;
///
/// Whether the tracking permission description is managed automatically.
///
[SerializeField]
[FormerlySerializedAs("trackingPermissionDescriptionManaged")]
public bool TrackingPermissionDescriptionManaged;
///
/// The Facebook Audience Network integration mode for iOS.
///
[SerializeField]
[FormerlySerializedAs("facebookAudienceNetworkIntegration")]
public FacebookAudienceNetworkIntegration FacebookAudienceNetworkIntegration;
}
///
/// ScriptableObject containing justtrack SDK configuration settings.
///
public class JustTrackSettings : ScriptableObject
{
///
/// The directory path where JustTrack settings are stored.
///
public const string JustTrackSettingsDirectory = "Assets/JustTrack/Resources";
///
/// The resource name for JustTrack settings.
///
public const string JustTrackSettingsResource = "JustTrackSettings";
///
/// The full path to the JustTrack settings asset file.
///
public const string JustTrackSettingsPath = JustTrackSettingsDirectory + "/" + JustTrackSettingsResource + ".asset";
///
/// Whether the SDK should be started manually instead of automatically.
///
[SerializeField]
[FormerlySerializedAs("manualStart")]
public bool ManualStart;
///
/// Whether the SDK should be initialized via a runtime constructor instead of the settings UI.
/// When true, JustTrackSDKBehaviour will not auto-initialize the SDK.
///
[SerializeField]
public bool UseRuntimeConstructor;
///
/// Whether to always update injected code during builds.
///
[SerializeField]
[FormerlySerializedAs("alwaysUpdateInjectedCode")]
public bool AlwaysUpdateInjectedCode;
///
/// Whether to ignore Firebase integration.
///
[SerializeField]
[FormerlySerializedAs("ignoreFirebaseIntegration")]
public bool IgnoreFirebaseIntegration;
///
/// The API token for Android platform integration.
///
[SerializeField]
[FormerlySerializedAs("androidApiToken")]
public string AndroidApiToken = string.Empty;
///
/// The API token for iOS platform integration.
///
[SerializeField]
[FormerlySerializedAs("iosApiToken")]
public string IosApiToken = string.Empty;
///
/// The API token for WebGL platform integration.
///
[SerializeField]
[FormerlySerializedAs("webglApiToken")]
public string WebglApiToken = string.Empty;
///
/// The bundle ID for WebGL platform integration.
///
[SerializeField]
[FormerlySerializedAs("webglBundleId")]
public string WebglBundleId = string.Empty;
///
/// The app version for WebGL platform integration.
///
[SerializeField]
[FormerlySerializedAs("webglAppVersion")]
public string WebglAppVersion = string.Empty;
///
/// The app code for WebGL platform integration.
///
[SerializeField]
[FormerlySerializedAs("webglAppCode")]
public string WebglAppCode = string.Empty;
///
/// The user ID for WebGL platform integration.
///
[SerializeField]
[FormerlySerializedAs("webglUserId")]
public string WebglUserId = string.Empty;
///
/// Whether AppLovin integration is enabled for Android.
///
[SerializeField]
[FormerlySerializedAs("androidAppLovinIntegration")]
public bool AndroidAppLovinIntegration;
///
/// Whether AppLovin integration is enabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosAppLovinIntegration")]
public bool IosAppLovinIntegration;
///
/// Whether Unity Ads integration is enabled for Android.
///
[SerializeField]
[FormerlySerializedAs("androidUnityAdsIntegration")]
public bool AndroidUnityAdsIntegration;
///
/// Whether Unity Ads integration is enabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosUnityAdsIntegration")]
public bool IosUnityAdsIntegration;
///
/// Whether IronSource integration is enabled for Android.
///
[SerializeField]
[FormerlySerializedAs("androidIronSourceIntegration")]
public bool AndroidIronSourceIntegration;
///
/// Whether IronSource integration is enabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosIronSourceIntegration")]
public bool IosIronSourceIntegration;
///
/// iOS-specific tracking configuration settings.
///
[SerializeField]
[FormerlySerializedAs("iosTrackingSettings")]
public iOSTrackingSettings IosTrackingSettings;
///
/// Whether automatic in-app purchase tracking is disabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosDisableAutomaticInAppPurchaseTracking")]
public bool IosDisableAutomaticInAppPurchaseTracking;
///
/// Whether automatic in-app purchase tracking is disabled for Android.
///
[SerializeField]
[FormerlySerializedAs("androidDisableAutomaticInAppPurchaseTracking")]
public bool AndroidDisableAutomaticInAppPurchaseTracking;
///
/// Whether Firebase integration is enabled for Android.
///
[SerializeField]
[FormerlySerializedAs("androidFirebaseIntegration")]
public bool AndroidFirebaseIntegration;
///
/// Whether Firebase integration is enabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosFirebaseIntegration")]
public bool IosFirebaseIntegration;
///
/// Whether Google ODM integration is enabled for iOS.
///
[SerializeField]
[FormerlySerializedAs("iosGoogleOdmIntegration")]
public bool IosGoogleOdmIntegration;
///
/// Custom bundle ID for Android platform integration.
/// If empty, the default bundle ID from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("androidBundleId")]
public string AndroidBundleId = string.Empty;
///
/// Custom app version name for Android platform integration (e.g., "1.0.0").
/// If empty, the default version from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("androidAppVersion")]
public string AndroidAppVersion = string.Empty;
///
/// Custom app version code for Android platform integration (e.g., "1").
/// If empty, the default version code from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("androidAppCode")]
public string AndroidAppCode = string.Empty;
///
/// Custom bundle ID for iOS platform integration.
/// If empty, the default bundle ID from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("iosBundleId")]
public string IosBundleId = string.Empty;
///
/// Custom app version name for iOS platform integration (e.g., "1.0.0").
/// If empty, the default version from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("iosAppVersion")]
public string IosAppVersion = string.Empty;
///
/// Custom app version code for iOS platform integration (e.g., "1").
/// If empty, the default build number from PlayerSettings will be used.
///
[SerializeField]
[FormerlySerializedAs("iosAppCode")]
public string IosAppCode = string.Empty;
///
/// Custom server URL for the SDK.
/// Leave empty to use the default production server.
///
[SerializeField]
[FormerlySerializedAs("serverUrl")]
public string ServerUrl = string.Empty;
///
/// Whether debug mode is enabled for the SDK.
///
[SerializeField]
[FormerlySerializedAs("enableDebugMode")]
public bool EnableDebugMode;
///
/// Whether console logging is enabled for the SDK.
///
[SerializeField]
[FormerlySerializedAs("enableConsoleLogging")]
public bool EnableConsoleLogging;
///
/// Loads JustTrack settings from Unity Resources.
///
/// The loaded JustTrack settings instance.
internal static JustTrackSettings LoadFromResources()
{
return Resources.Load(JustTrackSettings.JustTrackSettingsResource);
}
}
#pragma warning restore SA1401
}