SDK_UnityMoney/Assets/Adjust/Scripts/Adjust.cs

840 lines
22 KiB
C#
Raw Normal View History

2025-08-30 10:46:34 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace AdjustSdk
{
public class Adjust : MonoBehaviour
{
private const string errorMsgEditor = "[Adjust]: SDK can not be used in Editor.";
private const string errorMsgStart = "[Adjust]: SDK not started. Start it manually using the 'start' method.";
private const string errorMsgPlatform = "[Adjust]: SDK can only be used in Android and iOS apps.";
// [Header("SDK SETTINGS:")]
// [Space(5)]
// [Tooltip("If selected, it is expected from you to initialize Adjust SDK from your app code. " +
// "Any SDK configuration settings from prefab will be ignored in that case.")]
[HideInInspector]
public bool startManually = true;
[HideInInspector]
public string appToken;
[HideInInspector]
public AdjustEnvironment environment = AdjustEnvironment.Sandbox;
[HideInInspector]
public AdjustLogLevel logLevel = AdjustLogLevel.Info;
[HideInInspector]
public bool coppaCompliance = false;
[HideInInspector]
public bool sendInBackground = false;
[HideInInspector]
public bool launchDeferredDeeplink = true;
[HideInInspector]
public bool costDataInAttribution = false;
[HideInInspector]
public bool linkMe = false;
[HideInInspector]
public string defaultTracker;
// [Header("ANDROID SPECIFIC FEATURES:")]
// [Space(5)]
[HideInInspector]
public bool preinstallTracking = false;
[HideInInspector]
public string preinstallFilePath;
// [Header("iOS SPECIFIC FEATURES:")]
// [Space(5)]
[HideInInspector]
public bool adServices = true;
[HideInInspector]
public bool idfaReading = true;
[HideInInspector]
public bool skanAttribution = true;
void Awake()
{
if (IsEditor())
{
return;
}
DontDestroyOnLoad(transform.gameObject);
// TODO: double-check the state of Unity on deep linking nowadays
#if UNITY_ANDROID && UNITY_2019_2_OR_NEWER
Application.deepLinkActivated += (deeplink) =>
{
Adjust.ProcessDeeplink(new AdjustDeeplink(deeplink));
};
if (!string.IsNullOrEmpty(Application.absoluteURL))
{
// cold start and Application.absoluteURL not null so process deep link
Adjust.ProcessDeeplink(new AdjustDeeplink(Application.absoluteURL));
}
#endif
if (!this.startManually)
{
AdjustConfig adjustConfig = new AdjustConfig(
this.appToken,
this.environment,
(this.logLevel == AdjustLogLevel.Suppress));
adjustConfig.LogLevel = this.logLevel;
adjustConfig.IsSendingInBackgroundEnabled = this.sendInBackground;
adjustConfig.IsDeferredDeeplinkOpeningEnabled = this.launchDeferredDeeplink;
adjustConfig.DefaultTracker = this.defaultTracker;
// TODO: URL strategy
adjustConfig.IsCoppaComplianceEnabled = this.coppaCompliance;
adjustConfig.IsCostDataInAttributionEnabled = this.costDataInAttribution;
adjustConfig.IsPreinstallTrackingEnabled = this.preinstallTracking;
adjustConfig.PreinstallFilePath = this.preinstallFilePath;
adjustConfig.IsAdServicesEnabled = this.adServices;
adjustConfig.IsIdfaReadingEnabled = this.idfaReading;
adjustConfig.IsLinkMeEnabled = this.linkMe;
adjustConfig.IsSkanAttributionEnabled = this.skanAttribution;
Adjust.InitSdk(adjustConfig);
}
}
public static void InitSdk(AdjustConfig adjustConfig)
{
if (IsEditor())
{
return;
}
if (adjustConfig == null)
{
Debug.Log("[Adjust]: Missing config to start.");
return;
}
#if UNITY_IOS
AdjustiOS.InitSdk(adjustConfig);
#elif UNITY_ANDROID
AdjustAndroid.InitSdk(adjustConfig);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackEvent(AdjustEvent adjustEvent)
{
if (IsEditor())
{
return;
}
if (adjustEvent == null)
{
Debug.Log("[Adjust]: Missing event to track.");
return;
}
#if UNITY_IOS
AdjustiOS.TrackEvent(adjustEvent);
#elif UNITY_ANDROID
AdjustAndroid.TrackEvent(adjustEvent);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void Enable()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.Enable();
#elif UNITY_ANDROID
AdjustAndroid.Enable();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void Disable()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.Disable();
#elif UNITY_ANDROID
AdjustAndroid.Disable();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void IsEnabled(Action<bool> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.IsEnabled(callback);
#elif UNITY_ANDROID
AdjustAndroid.IsEnabled(callback);
#else
Debug.Log(errorMsgPlatform);
return;
#endif
}
public static void SwitchToOfflineMode()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SwitchToOfflineMode();
#elif UNITY_ANDROID
AdjustAndroid.SwitchToOfflineMode();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void SwitchBackToOnlineMode()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SwitchBackToOnlineMode();
#elif UNITY_ANDROID
AdjustAndroid.SwitchBackToOnlineMode();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void SetPushToken(string pushToken)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetPushToken(pushToken);
#elif UNITY_ANDROID
AdjustAndroid.SetPushToken(pushToken);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GdprForgetMe()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GdprForgetMe();
#elif UNITY_ANDROID
AdjustAndroid.GdprForgetMe();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void ProcessDeeplink(AdjustDeeplink deeplink)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.ProcessDeeplink(deeplink);
#elif UNITY_ANDROID
AdjustAndroid.ProcessDeeplink(deeplink);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void AddGlobalPartnerParameter(string key, string value)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.AddGlobalPartnerParameter(key, value);
#elif UNITY_ANDROID
AdjustAndroid.AddGlobalPartnerParameter(key, value);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void AddGlobalCallbackParameter(string key, string value)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.AddGlobalCallbackParameter(key, value);
#elif UNITY_ANDROID
AdjustAndroid.AddGlobalCallbackParameter(key, value);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void RemoveGlobalPartnerParameter(string key)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveGlobalPartnerParameter(key);
#elif UNITY_ANDROID
AdjustAndroid.RemoveGlobalPartnerParameter(key);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void RemoveGlobalCallbackParameter(string key)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveGlobalCallbackParameter(key);
#elif UNITY_ANDROID
AdjustAndroid.RemoveGlobalCallbackParameter(key);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void RemoveGlobalPartnerParameters()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveGlobalPartnerParameters();
#elif UNITY_ANDROID
AdjustAndroid.RemoveGlobalPartnerParameters();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void RemoveGlobalCallbackParameters()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveGlobalCallbackParameters();
#elif UNITY_ANDROID
AdjustAndroid.RemoveGlobalCallbackParameters();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackAdRevenue(AdjustAdRevenue adRevenue)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.TrackAdRevenue(adRevenue);
#elif UNITY_ANDROID
AdjustAndroid.TrackAdRevenue(adRevenue);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackAppStoreSubscription(AdjustAppStoreSubscription subscription)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.TrackAppStoreSubscription(subscription);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: App Store subscription tracking is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackPlayStoreSubscription(AdjustPlayStoreSubscription subscription)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store subscription tracking is only supported for Android platform.");
#elif UNITY_ANDROID
AdjustAndroid.TrackPlayStoreSubscription(subscription);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackThirdPartySharing(AdjustThirdPartySharing thirdPartySharing)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.TrackThirdPartySharing(thirdPartySharing);
#elif UNITY_ANDROID
AdjustAndroid.TrackThirdPartySharing(thirdPartySharing);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void TrackMeasurementConsent(bool measurementConsent)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.TrackMeasurementConsent(measurementConsent);
#elif UNITY_ANDROID
AdjustAndroid.TrackMeasurementConsent(measurementConsent);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void RequestAppTrackingAuthorization(Action<int> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RequestAppTrackingAuthorization(callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Requesting tracking authorization is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void UpdateSkanConversionValue(
int conversionValue,
string coarseValue,
bool lockWindow,
Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.UpdateSkanConversionValue(conversionValue, coarseValue, lockWindow, callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static int GetAppTrackingAuthorizationStatus()
{
if (IsEditor())
{
return -1;
}
#if UNITY_IOS
return AdjustiOS.GetAppTrackingAuthorizationStatus();
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! App tracking authorization status is only supported for iOS platform.");
return -1;
#else
Debug.Log(errorMsgPlatform);
return -1;
#endif
}
public static void GetAdid(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetAdid(callback);
#elif UNITY_ANDROID
AdjustAndroid.GetAdid(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetAttribution(Action<AdjustAttribution> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetAttribution(callback);
#elif UNITY_ANDROID
AdjustAndroid.GetAttribution(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetIdfa(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetIdfa(callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! IDFA is not available on Android platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetIdfv(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetIdfv(callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! IDFV is not available on Android platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetGoogleAdId(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Error! Google Advertising ID is not available on iOS platform.");
#elif UNITY_ANDROID
AdjustAndroid.GetGoogleAdId(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetAmazonAdId(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Error! Amazon Fire Advertising ID is not available on iOS platform.");
#elif UNITY_ANDROID
AdjustAndroid.GetAmazonAdId(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetSdkVersion(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetSdkVersion(callback);
#elif UNITY_ANDROID
AdjustAndroid.GetSdkVersion(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void GetLastDeeplink(Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GetLastDeeplink(callback);
#elif UNITY_ANDROID
AdjustAndroid.GetLastDeeplink(callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void VerifyAppStorePurchase(
AdjustAppStorePurchase purchase,
Action<AdjustPurchaseVerificationResult> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.VerifyAppStorePurchase(purchase, callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: App Store purchase verification is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void VerifyPlayStorePurchase(
AdjustPlayStorePurchase purchase,
Action<AdjustPurchaseVerificationResult> verificationResultCallback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store purchase verification is only supported for Android platform.");
#elif UNITY_ANDROID
AdjustAndroid.VerifyPlayStorePurchase(purchase, verificationResultCallback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void ProcessAndResolveDeeplink(AdjustDeeplink deeplink, Action<string> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.ProcessAndResolveDeeplink(deeplink, callback);
#elif UNITY_ANDROID
AdjustAndroid.ProcessAndResolveDeeplink(deeplink, callback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void VerifyAndTrackAppStorePurchase(
AdjustEvent adjustEvent,
Action<AdjustPurchaseVerificationResult> callback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.VerifyAndTrackAppStorePurchase(adjustEvent, callback);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: App Store purchase verification is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void VerifyAndTrackPlayStorePurchase(
AdjustEvent adjustEvent,
Action<AdjustPurchaseVerificationResult> verificationResultCallback)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store purchase verification is only supported for Android platform.");
#elif UNITY_ANDROID
AdjustAndroid.VerifyAndTrackPlayStorePurchase(adjustEvent, verificationResultCallback);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void EndFirstSessionDelay()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.EndFirstSessionDelay();
#elif UNITY_ANDROID
AdjustAndroid.EndFirstSessionDelay();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void EnableCoppaComplianceInDelay()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.EnableCoppaComplianceInDelay();
#elif UNITY_ANDROID
AdjustAndroid.EnableCoppaComplianceInDelay();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void DisableCoppaComplianceInDelay()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.DisableCoppaComplianceInDelay();
#elif UNITY_ANDROID
AdjustAndroid.DisableCoppaComplianceInDelay();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void EnablePlayStoreKidsComplianceInDelay()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store kids feature is only supported for Android platform.");
#elif UNITY_ANDROID
AdjustAndroid.EnablePlayStoreKidsComplianceInDelay();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void DisablePlayStoreKidsComplianceInDelay()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store kids feature is only supported for Android platform.");
#elif UNITY_ANDROID
AdjustAndroid.DisablePlayStoreKidsComplianceInDelay();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void SetExternalDeviceIdInDelay(string externalDeviceId)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetExternalDeviceIdInDelay(externalDeviceId);
#elif UNITY_ANDROID
AdjustAndroid.SetExternalDeviceIdInDelay(externalDeviceId);
#else
Debug.Log(errorMsgPlatform);
#endif
}
private static bool IsEditor()
{
#if UNITY_EDITOR
Debug.Log(errorMsgEditor);
return true;
#else
return false;
#endif
}
public static void SetTestOptions(Dictionary<string, string> testOptions)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetTestOptions(testOptions);
#elif UNITY_ANDROID
AdjustAndroid.SetTestOptions(testOptions);
#else
Debug.Log("[Adjust]: Cannot run integration tests. None of the supported platforms selected.");
#endif
}
}
}