341 lines
14 KiB
C#
341 lines
14 KiB
C#
#if UNITY_WSA
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
using UnityEngine;
|
|
|
|
#if UNITY_WSA_10_0
|
|
using Win10Interface;
|
|
#elif UNITY_WP_8_1
|
|
using Win81Interface;
|
|
#elif UNITY_WSA
|
|
using WinWsInterface;
|
|
#endif
|
|
|
|
namespace com.adjust.sdk
|
|
{
|
|
public class AdjustWindows
|
|
{
|
|
private const string sdkPrefix = "unity4.38.0";
|
|
private static bool appLaunched = false;
|
|
|
|
public static void Start(AdjustConfig adjustConfig)
|
|
{
|
|
string logLevelString = null;
|
|
string environment = adjustConfig.environment.ToLowercaseString();
|
|
|
|
Action<Dictionary<string, string>> attributionChangedAction = null;
|
|
Action<Dictionary<string, string>> sessionSuccessChangedAction = null;
|
|
Action<Dictionary<string, string>> sessionFailureChangedAction = null;
|
|
Action<Dictionary<string, string>> eventSuccessChangedAction = null;
|
|
Action<Dictionary<string, string>> eventFailureChangedAction = null;
|
|
Func<string, bool> deeplinkResponseFunc = null;
|
|
|
|
if (adjustConfig.logLevel.HasValue)
|
|
{
|
|
logLevelString = adjustConfig.logLevel.Value.ToLowercaseString();
|
|
}
|
|
|
|
if (adjustConfig.attributionChangedDelegate != null)
|
|
{
|
|
attributionChangedAction = (attributionMap) =>
|
|
{
|
|
var attribution = new AdjustAttribution(attributionMap);
|
|
adjustConfig.attributionChangedDelegate(attribution);
|
|
};
|
|
}
|
|
|
|
if (adjustConfig.sessionSuccessDelegate != null)
|
|
{
|
|
sessionSuccessChangedAction = (sessionMap) =>
|
|
{
|
|
var sessionData = new AdjustSessionSuccess(sessionMap);
|
|
adjustConfig.sessionSuccessDelegate(sessionData);
|
|
};
|
|
}
|
|
|
|
if (adjustConfig.sessionFailureDelegate != null)
|
|
{
|
|
sessionFailureChangedAction = (sessionMap) =>
|
|
{
|
|
var sessionData = new AdjustSessionFailure(sessionMap);
|
|
adjustConfig.sessionFailureDelegate(sessionData);
|
|
};
|
|
}
|
|
|
|
if (adjustConfig.eventSuccessDelegate != null)
|
|
{
|
|
eventSuccessChangedAction = (eventMap) =>
|
|
{
|
|
var eventData = new AdjustEventSuccess(eventMap);
|
|
adjustConfig.eventSuccessDelegate(eventData);
|
|
};
|
|
}
|
|
|
|
if (adjustConfig.eventFailureDelegate != null)
|
|
{
|
|
eventFailureChangedAction = (eventMap) =>
|
|
{
|
|
var eventData = new AdjustEventFailure(eventMap);
|
|
adjustConfig.eventFailureDelegate(eventData);
|
|
};
|
|
}
|
|
|
|
if (adjustConfig.deferredDeeplinkDelegate != null)
|
|
{
|
|
deeplinkResponseFunc = uri =>
|
|
{
|
|
if (adjustConfig.launchDeferredDeeplink)
|
|
{
|
|
adjustConfig.deferredDeeplinkDelegate(uri);
|
|
}
|
|
|
|
return adjustConfig.launchDeferredDeeplink;
|
|
};
|
|
}
|
|
|
|
bool sendInBackground = false;
|
|
if (adjustConfig.sendInBackground.HasValue)
|
|
{
|
|
sendInBackground = adjustConfig.sendInBackground.Value;
|
|
}
|
|
|
|
double delayStartSeconds = 0;
|
|
if (adjustConfig.delayStart.HasValue)
|
|
{
|
|
delayStartSeconds = adjustConfig.delayStart.Value;
|
|
}
|
|
|
|
AdjustConfigDto adjustConfigDto = new AdjustConfigDto {
|
|
AppToken = adjustConfig.appToken,
|
|
Environment = environment,
|
|
SdkPrefix = sdkPrefix,
|
|
SendInBackground = sendInBackground,
|
|
DelayStart = delayStartSeconds,
|
|
UserAgent = adjustConfig.userAgent,
|
|
DefaultTracker = adjustConfig.defaultTracker,
|
|
EventBufferingEnabled = adjustConfig.eventBufferingEnabled,
|
|
LaunchDeferredDeeplink = adjustConfig.launchDeferredDeeplink,
|
|
LogLevelString = logLevelString,
|
|
LogDelegate = adjustConfig.logDelegate,
|
|
ActionAttributionChangedData = attributionChangedAction,
|
|
ActionSessionSuccessData = sessionSuccessChangedAction,
|
|
ActionSessionFailureData = sessionFailureChangedAction,
|
|
ActionEventSuccessData = eventSuccessChangedAction,
|
|
ActionEventFailureData = eventFailureChangedAction,
|
|
FuncDeeplinkResponseData = deeplinkResponseFunc,
|
|
IsDeviceKnown = adjustConfig.isDeviceKnown,
|
|
SecretId = adjustConfig.secretId,
|
|
Info1 = adjustConfig.info1,
|
|
Info2 = adjustConfig.info2,
|
|
Info3 = adjustConfig.info3,
|
|
Info4 = adjustConfig.info4
|
|
};
|
|
|
|
AdjustWinInterface.ApplicationLaunching(adjustConfigDto);
|
|
AdjustWinInterface.ApplicationActivated();
|
|
appLaunched = true;
|
|
}
|
|
|
|
public static void TrackEvent(AdjustEvent adjustEvent)
|
|
{
|
|
AdjustWinInterface.TrackEvent(
|
|
eventToken: adjustEvent.eventToken,
|
|
revenue: adjustEvent.revenue,
|
|
currency: adjustEvent.currency,
|
|
purchaseId: adjustEvent.transactionId,
|
|
callbackId: adjustEvent.callbackId,
|
|
callbackList: adjustEvent.callbackList,
|
|
partnerList: adjustEvent.partnerList
|
|
);
|
|
}
|
|
|
|
public static bool IsEnabled()
|
|
{
|
|
return AdjustWinInterface.IsEnabled();
|
|
}
|
|
|
|
public static void OnResume()
|
|
{
|
|
if (!appLaunched)
|
|
{
|
|
return;
|
|
}
|
|
|
|
AdjustWinInterface.ApplicationActivated();
|
|
}
|
|
|
|
public static void OnPause()
|
|
{
|
|
AdjustWinInterface.ApplicationDeactivated();
|
|
}
|
|
|
|
public static void SetEnabled(bool enabled)
|
|
{
|
|
AdjustWinInterface.SetEnabled(enabled);
|
|
}
|
|
|
|
public static void SetOfflineMode(bool offlineMode)
|
|
{
|
|
AdjustWinInterface.SetOfflineMode(offlineMode);
|
|
}
|
|
|
|
public static void SendFirstPackages()
|
|
{
|
|
AdjustWinInterface.SendFirstPackages();
|
|
}
|
|
|
|
public static void SetDeviceToken(string deviceToken)
|
|
{
|
|
AdjustWinInterface.SetDeviceToken(deviceToken);
|
|
}
|
|
|
|
public static void AppWillOpenUrl(string url)
|
|
{
|
|
AdjustWinInterface.AppWillOpenUrl(url);
|
|
}
|
|
|
|
public static void AddSessionPartnerParameter(string key, string value)
|
|
{
|
|
AdjustWinInterface.AddSessionPartnerParameter(key, value);
|
|
}
|
|
|
|
public static void AddSessionCallbackParameter(string key, string value)
|
|
{
|
|
AdjustWinInterface.AddSessionCallbackParameter(key, value);
|
|
}
|
|
|
|
public static void RemoveSessionPartnerParameter(string key)
|
|
{
|
|
AdjustWinInterface.RemoveSessionPartnerParameter(key);
|
|
}
|
|
|
|
public static void RemoveSessionCallbackParameter(string key)
|
|
{
|
|
AdjustWinInterface.RemoveSessionCallbackParameter(key);
|
|
}
|
|
|
|
public static void ResetSessionPartnerParameters()
|
|
{
|
|
AdjustWinInterface.ResetSessionPartnerParameters();
|
|
}
|
|
|
|
public static void ResetSessionCallbackParameters()
|
|
{
|
|
AdjustWinInterface.ResetSessionCallbackParameters();
|
|
}
|
|
|
|
public static string GetAdid()
|
|
{
|
|
return AdjustWinInterface.GetAdid();
|
|
}
|
|
|
|
public static string GetSdkVersion()
|
|
{
|
|
return sdkPrefix + "@" + AdjustWinInterface.GetSdkVersion();
|
|
}
|
|
|
|
public static AdjustAttribution GetAttribution()
|
|
{
|
|
var attributionMap = AdjustWinInterface.GetAttribution();
|
|
if (attributionMap == null)
|
|
{
|
|
return new AdjustAttribution();
|
|
}
|
|
|
|
return new AdjustAttribution(attributionMap);
|
|
}
|
|
|
|
public static void GdprForgetMe()
|
|
{
|
|
AdjustWinInterface.GdprForgetMe();
|
|
}
|
|
|
|
public static string GetWinAdId()
|
|
{
|
|
return AdjustWinInterface.GetWindowsAdId();
|
|
}
|
|
|
|
public static void SetTestOptions(Dictionary<string, string> testOptions)
|
|
{
|
|
string basePath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsBasePath) ?
|
|
testOptions[AdjustUtils.KeyTestOptionsBasePath] : null;
|
|
string gdprPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsGdprPath) ?
|
|
testOptions[AdjustUtils.KeyTestOptionsGdprPath] : null;
|
|
long timerIntervalMls = -1;
|
|
long timerStartMls = -1;
|
|
long sessionIntMls = -1;
|
|
long subsessionIntMls = -1;
|
|
bool teardown = false;
|
|
bool deleteState = false;
|
|
bool noBackoffWait = false;
|
|
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds))
|
|
{
|
|
timerIntervalMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds]);
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerStartInMilliseconds))
|
|
{
|
|
timerStartMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsTimerStartInMilliseconds]);
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsSessionIntervalInMilliseconds))
|
|
{
|
|
sessionIntMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsSessionIntervalInMilliseconds]);
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsSubsessionIntervalInMilliseconds))
|
|
{
|
|
subsessionIntMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsSubsessionIntervalInMilliseconds]);
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTeardown))
|
|
{
|
|
teardown = testOptions[AdjustUtils.KeyTestOptionsTeardown].ToLower() == "true";
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsDeleteState))
|
|
{
|
|
deleteState = testOptions[AdjustUtils.KeyTestOptionsDeleteState].ToLower() == "true";
|
|
}
|
|
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsNoBackoffWait))
|
|
{
|
|
noBackoffWait = testOptions[AdjustUtils.KeyTestOptionsNoBackoffWait].ToLower() == "true";
|
|
}
|
|
|
|
Type testLibInterfaceType = Type.GetType("TestLibraryInterface.TestLibraryInterface, TestLibraryInterface");
|
|
Type adjustTestOptionsDtoType = Type.GetType("TestLibraryInterface.AdjustTestOptionsDto, TestLibraryInterface");
|
|
if (testLibInterfaceType == null || adjustTestOptionsDtoType == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
PropertyInfo baseUrlInfo = adjustTestOptionsDtoType.GetProperty("BaseUrl");
|
|
PropertyInfo gdprUrlInfo = adjustTestOptionsDtoType.GetProperty("GdprUrl");
|
|
PropertyInfo basePathInfo = adjustTestOptionsDtoType.GetProperty("BasePath");
|
|
PropertyInfo gdprPathInfo = adjustTestOptionsDtoType.GetProperty("GdprPath");
|
|
PropertyInfo sessionIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("SessionIntervalInMilliseconds");
|
|
PropertyInfo subsessionIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("SubsessionIntervalInMilliseconds");
|
|
PropertyInfo timerIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("TimerIntervalInMilliseconds");
|
|
PropertyInfo timerStartInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("TimerStartInMilliseconds");
|
|
PropertyInfo deleteStateInfo = adjustTestOptionsDtoType.GetProperty("DeleteState");
|
|
PropertyInfo teardownInfo = adjustTestOptionsDtoType.GetProperty("Teardown");
|
|
PropertyInfo noBackoffWaitInfo = adjustTestOptionsDtoType.GetProperty("NoBackoffWait");
|
|
|
|
object adjustTestOptionsDtoInstance = Activator.CreateInstance(adjustTestOptionsDtoType);
|
|
baseUrlInfo.SetValue(adjustTestOptionsDtoInstance, testOptions[AdjustUtils.KeyTestOptionsBaseUrl], null);
|
|
gdprUrlInfo.SetValue(adjustTestOptionsDtoInstance, testOptions[AdjustUtils.KeyTestOptionsGdprUrl], null);
|
|
basePathInfo.SetValue(adjustTestOptionsDtoInstance, basePath, null);
|
|
gdprPathInfo.SetValue(adjustTestOptionsDtoInstance, gdprPath, null);
|
|
sessionIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, sessionIntMls, null);
|
|
subsessionIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, subsessionIntMls, null);
|
|
timerIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, timerIntervalMls, null);
|
|
timerStartInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, timerStartMls, null);
|
|
deleteStateInfo.SetValue(adjustTestOptionsDtoInstance, deleteState, null);
|
|
teardownInfo.SetValue(adjustTestOptionsDtoInstance, teardown, null);
|
|
noBackoffWaitInfo.SetValue(adjustTestOptionsDtoInstance, noBackoffWait, null);
|
|
|
|
MethodInfo setTestOptionsMethodInfo = testLibInterfaceType.GetMethod("SetTestOptions");
|
|
setTestOptionsMethodInfo.Invoke(null, new object[] { adjustTestOptionsDtoInstance });
|
|
}
|
|
}
|
|
}
|
|
#endif
|