com.guru.unity.adjust/Adjust/Unity/Adjust.cs

1212 lines
36 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace com.adjust.sdk
{
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, iOS, Windows Phone 8.1, Windows Store or Universal Windows 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 eventBuffering = false;
[HideInInspector]
public bool sendInBackground = false;
[HideInInspector]
public bool launchDeferredDeeplink = true;
[HideInInspector]
public bool needsCost = false;
[HideInInspector]
public bool coppaCompliant = false;
[HideInInspector]
public bool linkMe = false;
[HideInInspector]
public string defaultTracker;
[HideInInspector]
public AdjustUrlStrategy urlStrategy = AdjustUrlStrategy.Default;
[HideInInspector]
public double startDelay = 0;
// [Header("APP SECRET:")]
// [Space(5)]
[HideInInspector]
public long secretId = 0;
[HideInInspector]
public long info1 = 0;
[HideInInspector]
public long info2 = 0;
[HideInInspector]
public long info3 = 0;
[HideInInspector]
public long info4 = 0;
// [Header("ANDROID SPECIFIC FEATURES:")]
// [Space(5)]
[HideInInspector]
public bool preinstallTracking = false;
[HideInInspector]
public string preinstallFilePath;
[HideInInspector]
public bool playStoreKidsApp = false;
// [Header("iOS SPECIFIC FEATURES:")]
// [Space(5)]
[HideInInspector]
public bool adServicesInfoReading = true;
[HideInInspector]
public bool idfaInfoReading = true;
[HideInInspector]
public bool skAdNetworkHandling = true;
#if UNITY_IOS
// Delegate references for iOS callback triggering
private static List<Action<int>> authorizationStatusDelegates = null;
private static Action<string> deferredDeeplinkDelegate = null;
private static Action<AdjustEventSuccess> eventSuccessDelegate = null;
private static Action<AdjustEventFailure> eventFailureDelegate = null;
private static Action<AdjustSessionSuccess> sessionSuccessDelegate = null;
private static Action<AdjustSessionFailure> sessionFailureDelegate = null;
private static Action<AdjustAttribution> attributionChangedDelegate = null;
private static Action<int> conversionValueUpdatedDelegate = null;
private static Action<int, string, bool> skad4ConversionValueUpdatedDelegate = null;
private static Action<string> skadUpdateConversionValueDelegate = null;
private static Action<string> skad4UpdateConversionValueDelegate = null;
private static Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate = null;
#endif
void Awake()
{
if (IsEditor())
{
return;
}
DontDestroyOnLoad(transform.gameObject);
#if UNITY_ANDROID && UNITY_2019_2_OR_NEWER
Application.deepLinkActivated += Adjust.appWillOpenUrl;
if (!string.IsNullOrEmpty(Application.absoluteURL))
{
// Cold start and Application.absoluteURL not null so process Deep Link.
Adjust.appWillOpenUrl(Application.absoluteURL);
}
#endif
if (!this.startManually)
{
AdjustConfig adjustConfig = new AdjustConfig(this.appToken, this.environment, (this.logLevel == AdjustLogLevel.Suppress));
adjustConfig.setLogLevel(this.logLevel);
adjustConfig.setSendInBackground(this.sendInBackground);
adjustConfig.setEventBufferingEnabled(this.eventBuffering);
adjustConfig.setLaunchDeferredDeeplink(this.launchDeferredDeeplink);
adjustConfig.setDefaultTracker(this.defaultTracker);
adjustConfig.setUrlStrategy(this.urlStrategy.ToLowerCaseString());
adjustConfig.setAppSecret(this.secretId, this.info1, this.info2, this.info3, this.info4);
adjustConfig.setDelayStart(this.startDelay);
adjustConfig.setNeedsCost(this.needsCost);
adjustConfig.setPreinstallTrackingEnabled(this.preinstallTracking);
adjustConfig.setPreinstallFilePath(this.preinstallFilePath);
adjustConfig.setAllowAdServicesInfoReading(this.adServicesInfoReading);
adjustConfig.setAllowIdfaReading(this.idfaInfoReading);
adjustConfig.setCoppaCompliantEnabled(this.coppaCompliant);
adjustConfig.setPlayStoreKidsAppEnabled(this.playStoreKidsApp);
adjustConfig.setLinkMeEnabled(this.linkMe);
if (!skAdNetworkHandling)
{
adjustConfig.deactivateSKAdNetworkHandling();
}
Adjust.start(adjustConfig);
}
}
void OnApplicationPause(bool pauseStatus)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
// No action, iOS SDK is subscribed to iOS lifecycle notifications.
#elif UNITY_ANDROID
if (pauseStatus)
{
AdjustAndroid.OnPause();
}
else
{
AdjustAndroid.OnResume();
}
#elif (UNITY_WSA || UNITY_WP8)
if (pauseStatus)
{
AdjustWindows.OnPause();
}
else
{
AdjustWindows.OnResume();
}
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void start(AdjustConfig adjustConfig)
{
if (IsEditor())
{
return;
}
if (adjustConfig == null)
{
Debug.Log("[Adjust]: Missing config to start.");
return;
}
#if UNITY_IOS
Adjust.eventSuccessDelegate = adjustConfig.getEventSuccessDelegate();
Adjust.eventFailureDelegate = adjustConfig.getEventFailureDelegate();
Adjust.sessionSuccessDelegate = adjustConfig.getSessionSuccessDelegate();
Adjust.sessionFailureDelegate = adjustConfig.getSessionFailureDelegate();
Adjust.deferredDeeplinkDelegate = adjustConfig.getDeferredDeeplinkDelegate();
Adjust.attributionChangedDelegate = adjustConfig.getAttributionChangedDelegate();
Adjust.conversionValueUpdatedDelegate = adjustConfig.getConversionValueUpdatedDelegate();
Adjust.skad4ConversionValueUpdatedDelegate = adjustConfig.getSkad4ConversionValueUpdatedDelegate();
AdjustiOS.Start(adjustConfig);
#elif UNITY_ANDROID
AdjustAndroid.Start(adjustConfig);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.Start(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);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.TrackEvent(adjustEvent);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void setEnabled(bool enabled)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetEnabled(enabled);
#elif UNITY_ANDROID
AdjustAndroid.SetEnabled(enabled);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.SetEnabled(enabled);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static bool isEnabled()
{
if (IsEditor())
{
return false;
}
#if UNITY_IOS
return AdjustiOS.IsEnabled();
#elif UNITY_ANDROID
return AdjustAndroid.IsEnabled();
#elif (UNITY_WSA || UNITY_WP8)
return AdjustWindows.IsEnabled();
#else
Debug.Log(errorMsgPlatform);
return false;
#endif
}
public static void setOfflineMode(bool enabled)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetOfflineMode(enabled);
#elif UNITY_ANDROID
AdjustAndroid.SetOfflineMode(enabled);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.SetOfflineMode(enabled);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void setDeviceToken(string deviceToken)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SetDeviceToken(deviceToken);
#elif UNITY_ANDROID
AdjustAndroid.SetDeviceToken(deviceToken);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.SetDeviceToken(deviceToken);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void gdprForgetMe()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.GdprForgetMe();
#elif UNITY_ANDROID
AdjustAndroid.GdprForgetMe();
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.GdprForgetMe();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void disableThirdPartySharing()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.DisableThirdPartySharing();
#elif UNITY_ANDROID
AdjustAndroid.DisableThirdPartySharing();
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Disable third party sharing is only supported for Android and iOS platforms.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void appWillOpenUrl(string url)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.AppWillOpenUrl(url);
#elif UNITY_ANDROID
AdjustAndroid.AppWillOpenUrl(url);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.AppWillOpenUrl(url);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void sendFirstPackages()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.SendFirstPackages();
#elif UNITY_ANDROID
AdjustAndroid.SendFirstPackages();
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.SendFirstPackages();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void addSessionPartnerParameter(string key, string value)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.AddSessionPartnerParameter(key, value);
#elif UNITY_ANDROID
AdjustAndroid.AddSessionPartnerParameter(key, value);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.AddSessionPartnerParameter(key, value);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void addSessionCallbackParameter(string key, string value)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.AddSessionCallbackParameter(key, value);
#elif UNITY_ANDROID
AdjustAndroid.AddSessionCallbackParameter(key, value);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.AddSessionCallbackParameter(key, value);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void removeSessionPartnerParameter(string key)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveSessionPartnerParameter(key);
#elif UNITY_ANDROID
AdjustAndroid.RemoveSessionPartnerParameter(key);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.RemoveSessionPartnerParameter(key);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void removeSessionCallbackParameter(string key)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.RemoveSessionCallbackParameter(key);
#elif UNITY_ANDROID
AdjustAndroid.RemoveSessionCallbackParameter(key);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.RemoveSessionCallbackParameter(key);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void resetSessionPartnerParameters()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.ResetSessionPartnerParameters();
#elif UNITY_ANDROID
AdjustAndroid.ResetSessionPartnerParameters();
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.ResetSessionPartnerParameters();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void resetSessionCallbackParameters()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.ResetSessionCallbackParameters();
#elif UNITY_ANDROID
AdjustAndroid.ResetSessionCallbackParameters();
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.ResetSessionCallbackParameters();
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void trackAdRevenue(string source, string payload)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.TrackAdRevenue(source, payload);
#elif UNITY_ANDROID
AdjustAndroid.TrackAdRevenue(source, payload);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Ad revenue tracking is only supported for Android and iOS platforms.");
#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);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Ad revenue tracking is only supported for Android and iOS platforms.");
#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.");
#elif (UNITY_WSA || UNITY_WP8)
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);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Play Store subscription tracking is only supported for Android platform.");
#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);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Third party sharing tracking is only supported for iOS and Android platforms.");
#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);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Measurement consent tracking is only supported for iOS and Android platforms.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void requestTrackingAuthorizationWithCompletionHandler(Action<int> statusCallback, string sceneName = "Adjust")
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
if (Adjust.authorizationStatusDelegates == null)
{
Adjust.authorizationStatusDelegates = new List<Action<int>>();
}
Adjust.authorizationStatusDelegates.Add(statusCallback);
AdjustiOS.RequestTrackingAuthorizationWithCompletionHandler(sceneName);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Requesting tracking authorization is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Requesting tracking authorization is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void updateConversionValue(int conversionValue)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.UpdateConversionValue(conversionValue);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void updateConversionValue(int conversionValue, Action<string> completionCallback, string sceneName = "Adjust")
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Adjust.skadUpdateConversionValueDelegate = completionCallback;
AdjustiOS.UpdateConversionValue(conversionValue, sceneName);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void updateConversionValue(int conversionValue, string coarseValue, bool lockWindow, Action<string> completionCallback, string sceneName = "Adjust")
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Adjust.skad4UpdateConversionValueDelegate = completionCallback;
AdjustiOS.UpdateConversionValue(conversionValue, coarseValue, lockWindow, sceneName);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Updating SKAdNetwork conversion value is only supported for iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void checkForNewAttStatus()
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
AdjustiOS.CheckForNewAttStatus();
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Checking for new ATT status is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Checking for new ATT status 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;
#elif (UNITY_WSA || UNITY_WP8)
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 string getAdid()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
return AdjustiOS.GetAdid();
#elif UNITY_ANDROID
return AdjustAndroid.GetAdid();
#elif (UNITY_WSA || UNITY_WP8)
return AdjustWindows.GetAdid();
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static AdjustAttribution getAttribution()
{
if (IsEditor())
{
return null;
}
#if UNITY_IOS
return AdjustiOS.GetAttribution();
#elif UNITY_ANDROID
return AdjustAndroid.GetAttribution();
#elif (UNITY_WSA || UNITY_WP8)
return AdjustWindows.GetAttribution();
#else
Debug.Log(errorMsgPlatform);
return null;
#endif
}
public static string getWinAdid()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Error! Windows Advertising ID is not available on iOS platform.");
return string.Empty;
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! Windows Advertising ID is not available on Android platform.");
return string.Empty;
#elif (UNITY_WSA || UNITY_WP8)
return AdjustWindows.GetWinAdId();
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static string getIdfa()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
return AdjustiOS.GetIdfa();
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! IDFA is not available on Android platform.");
return string.Empty;
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Error! IDFA is not available on Windows platform.");
return string.Empty;
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static string getIdfv()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
return AdjustiOS.GetIdfv();
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! IDFV is not available on Android platform.");
return string.Empty;
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Error! IDFV is not available on Windows platform.");
return string.Empty;
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static string getSdkVersion()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
return AdjustiOS.GetSdkVersion();
#elif UNITY_ANDROID
return AdjustAndroid.GetSdkVersion();
#elif (UNITY_WSA || UNITY_WP8)
return AdjustWindows.GetSdkVersion();
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
[Obsolete("This method is intended for testing purposes only. Do not use it.")]
public static void setReferrer(string referrer)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Install referrer is not available on iOS platform.");
#elif UNITY_ANDROID
AdjustAndroid.SetReferrer(referrer);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Error! Install referrer is not available on Windows platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static void getGoogleAdId(Action<string> onDeviceIdsRead)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Google Play Advertising ID is not available on iOS platform.");
onDeviceIdsRead(string.Empty);
#elif UNITY_ANDROID
AdjustAndroid.GetGoogleAdId(onDeviceIdsRead);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Google Play Advertising ID is not available on Windows platform.");
onDeviceIdsRead(string.Empty);
#else
Debug.Log(errorMsgPlatform);
#endif
}
public static string getAmazonAdId()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Amazon Advertising ID is not available on iOS platform.");
return string.Empty;
#elif UNITY_ANDROID
return AdjustAndroid.GetAmazonAdId();
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Amazon Advertising ID not available on Windows platform.");
return string.Empty;
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static string getLastDeeplink()
{
if (IsEditor())
{
return string.Empty;
}
#if UNITY_IOS
return AdjustiOS.GetLastDeeplink();
#elif UNITY_ANDROID
Debug.Log("[Adjust]: Error! Last deeplink getter is not available on Android platform.");
return string.Empty;
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Error! Last deeplink getter is not available on Windows platform.");
return string.Empty;
#else
Debug.Log(errorMsgPlatform);
return string.Empty;
#endif
}
public static void verifyAppStorePurchase(
AdjustAppStorePurchase purchase,
Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate,
string sceneName = "Adjust")
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
if (purchase == null ||
purchase.transactionId == null ||
purchase.productId == null ||
purchase.receipt == null)
{
Debug.Log("[Adjust]: Invalid App Store purchase parameters.");
return;
}
Adjust.verificationInfoDelegate = verificationInfoDelegate;
AdjustiOS.VerifyAppStorePurchase(purchase, sceneName);
#elif UNITY_ANDROID
Debug.Log("[Adjust]: App Store purchase verification is only supported for iOS platform.");
#elif (UNITY_WSA || UNITY_WP8)
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<AdjustPurchaseVerificationInfo> verificationInfoDelegate)
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Debug.Log("[Adjust]: Play Store purchase verification is only supported for Android platform.");
#elif UNITY_ANDROID
if (purchase == null ||
purchase.productId == null ||
purchase.purchaseToken == null)
{
Debug.Log("[Adjust]: Invalid Play Store purchase parameters.");
return;
}
AdjustAndroid.VerifyPlayStorePurchase(purchase, verificationInfoDelegate);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Play Store purchase verification is only supported for Android platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
#if UNITY_IOS
public void GetNativeAttribution(string attributionData)
{
if (IsEditor())
{
return;
}
if (Adjust.attributionChangedDelegate == null)
{
Debug.Log("[Adjust]: Attribution changed delegate was not set.");
return;
}
var attribution = new AdjustAttribution(attributionData);
Adjust.attributionChangedDelegate(attribution);
}
public void GetNativeEventSuccess(string eventSuccessData)
{
if (IsEditor())
{
return;
}
if (Adjust.eventSuccessDelegate == null)
{
Debug.Log("[Adjust]: Event success delegate was not set.");
return;
}
var eventSuccess = new AdjustEventSuccess(eventSuccessData);
Adjust.eventSuccessDelegate(eventSuccess);
}
public void GetNativeEventFailure(string eventFailureData)
{
if (IsEditor())
{
return;
}
if (Adjust.eventFailureDelegate == null)
{
Debug.Log("[Adjust]: Event failure delegate was not set.");
return;
}
var eventFailure = new AdjustEventFailure(eventFailureData);
Adjust.eventFailureDelegate(eventFailure);
}
public void GetNativeSessionSuccess(string sessionSuccessData)
{
if (IsEditor())
{
return;
}
if (Adjust.sessionSuccessDelegate == null)
{
Debug.Log("[Adjust]: Session success delegate was not set.");
return;
}
var sessionSuccess = new AdjustSessionSuccess(sessionSuccessData);
Adjust.sessionSuccessDelegate(sessionSuccess);
}
public void GetNativeSessionFailure(string sessionFailureData)
{
if (IsEditor())
{
return;
}
if (Adjust.sessionFailureDelegate == null)
{
Debug.Log("[Adjust]: Session failure delegate was not set.");
return;
}
var sessionFailure = new AdjustSessionFailure(sessionFailureData);
Adjust.sessionFailureDelegate(sessionFailure);
}
public void GetNativeDeferredDeeplink(string deeplinkURL)
{
if (IsEditor())
{
return;
}
if (Adjust.deferredDeeplinkDelegate == null)
{
Debug.Log("[Adjust]: Deferred deeplink delegate was not set.");
return;
}
Adjust.deferredDeeplinkDelegate(deeplinkURL);
}
public void GetNativeConversionValueUpdated(string conversionValue)
{
if (IsEditor())
{
return;
}
if (Adjust.conversionValueUpdatedDelegate == null)
{
Debug.Log("[Adjust]: Conversion value updated delegate was not set.");
return;
}
int cv = -1;
if (Int32.TryParse(conversionValue, out cv))
{
if (cv != -1)
{
Adjust.conversionValueUpdatedDelegate(cv);
}
}
}
public void GetNativeSkad4ConversionValueUpdated(string conversionValueUpdate)
{
if (IsEditor())
{
return;
}
if (Adjust.skad4ConversionValueUpdatedDelegate == null)
{
Debug.Log("[Adjust]: SKAD4 Conversion value updated delegate was not set.");
return;
}
int conversionValue = AdjustUtils.GetSkad4ConversionValue(conversionValueUpdate);
string coarseValue = AdjustUtils.GetSkad4CoarseValue(conversionValueUpdate);
bool lockWindow = AdjustUtils.GetSkad4LockWindow(conversionValueUpdate);
Adjust.skad4ConversionValueUpdatedDelegate(conversionValue, coarseValue, lockWindow);
}
public void GetNativeSkadCompletionDelegate(string message)
{
if (IsEditor())
{
return;
}
if (Adjust.skadUpdateConversionValueDelegate == null)
{
Debug.Log("[Adjust]: SKAD completion delegate was not set.");
return;
}
if (message != null)
{
Adjust.skadUpdateConversionValueDelegate(message);
}
}
public void GetNativeSkad4CompletionDelegate(string message)
{
if (IsEditor())
{
return;
}
if (Adjust.skad4UpdateConversionValueDelegate == null)
{
Debug.Log("[Adjust]: SKAD4 completion delegate was not set.");
return;
}
if (message != null)
{
Adjust.skad4UpdateConversionValueDelegate(message);
}
}
public void GetAuthorizationStatus(string authorizationStatus)
{
if (IsEditor())
{
return;
}
if (Adjust.authorizationStatusDelegates == null)
{
Debug.Log("[Adjust]: Authorization status delegates were not set.");
return;
}
foreach (Action<int> callback in Adjust.authorizationStatusDelegates)
{
callback(Int16.Parse(authorizationStatus));
}
Adjust.authorizationStatusDelegates.Clear();
}
public void GetNativeVerificationInfo(string verificationInfoData)
{
if (IsEditor())
{
return;
}
if (Adjust.verificationInfoDelegate == null)
{
Debug.Log("[Adjust]: Purchase verification info delegate was not set.");
return;
}
var verificationInfo = new AdjustPurchaseVerificationInfo(verificationInfoData);
Adjust.verificationInfoDelegate(verificationInfo);
}
#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);
#elif (UNITY_WSA || UNITY_WP8)
AdjustWindows.SetTestOptions(testOptions);
#else
Debug.Log("[Adjust]: Cannot run integration tests. None of the supported platforms selected.");
#endif
}
}
}