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

378 lines
15 KiB
C#
Raw Normal View History

2023-12-26 03:52:53 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace com.adjust.sdk
{
public class AdjustUtils
{
public static string KeyAdid = "adid";
public static string KeyMessage = "message";
public static string KeyNetwork = "network";
public static string KeyAdgroup = "adgroup";
public static string KeyCampaign = "campaign";
public static string KeyCreative = "creative";
public static string KeyWillRetry = "willRetry";
public static string KeyTimestamp = "timestamp";
public static string KeyCallbackId = "callbackId";
public static string KeyEventToken = "eventToken";
public static string KeyClickLabel = "clickLabel";
public static string KeyTrackerName = "trackerName";
public static string KeyTrackerToken = "trackerToken";
public static string KeyJsonResponse = "jsonResponse";
public static string KeyCostType = "costType";
public static string KeyCostAmount = "costAmount";
public static string KeyCostCurrency = "costCurrency";
public static string KeyFbInstallReferrer = "fbInstallReferrer";
public static string KeySkadConversionValue = "fineValue";
public static string KeySkadCoarseValue = "coarseValue";
public static string KeySkadLockWindow = "lockWindow";
public static string KeyCode = "code";
public static string KeyVerificationStatus = "verificationStatus";
// For testing purposes.
public static string KeyTestOptionsBaseUrl = "baseUrl";
public static string KeyTestOptionsGdprUrl = "gdprUrl";
public static string KeyTestOptionsSubscriptionUrl = "subscriptionUrl";
public static string KeyTestOptionsPurchaseVerificationUrl = "purchaseVerificationUrl";
2024-04-16 05:30:31 +00:00
public static string KeyTestOptionsOverwriteUrl = "urlOverwrite";
2023-12-26 03:52:53 +00:00
public static string KeyTestOptionsExtraPath = "extraPath";
public static string KeyTestOptionsBasePath = "basePath";
public static string KeyTestOptionsGdprPath = "gdprPath";
public static string KeyTestOptionsDeleteState = "deleteState";
public static string KeyTestOptionsUseTestConnectionOptions = "useTestConnectionOptions";
public static string KeyTestOptionsTimerIntervalInMilliseconds = "timerIntervalInMilliseconds";
public static string KeyTestOptionsTimerStartInMilliseconds = "timerStartInMilliseconds";
public static string KeyTestOptionsSessionIntervalInMilliseconds = "sessionIntervalInMilliseconds";
public static string KeyTestOptionsSubsessionIntervalInMilliseconds = "subsessionIntervalInMilliseconds";
public static string KeyTestOptionsTeardown = "teardown";
public static string KeyTestOptionsNoBackoffWait = "noBackoffWait";
public static string KeyTestOptionsAdServicesFrameworkEnabled = "adServicesFrameworkEnabled";
2024-04-16 05:30:31 +00:00
public static string KeyTestOptionsAttStatus = "attStatus";
public static string KeyTestOptionsIdfa = "idfa";
2023-12-26 03:52:53 +00:00
public static int ConvertLogLevel(AdjustLogLevel? logLevel)
{
if (logLevel == null)
{
return -1;
}
return (int)logLevel;
}
public static int ConvertBool(bool? value)
{
if (value == null)
{
return -1;
}
if (value.Value)
{
return 1;
}
else
{
return 0;
}
}
public static double ConvertDouble(double? value)
{
if (value == null)
{
return -1;
}
return (double)value;
}
public static int ConvertInt(int? value)
{
if (value == null)
{
return -1;
}
return (int)value;
}
public static long ConvertLong(long? value)
{
if (value == null)
{
return -1;
}
return (long)value;
}
public static string ConvertListToJson(List<String> list)
{
if (list == null)
{
return null;
}
// list of callback / partner parameters must contain even number of elements
if (list.Count % 2 != 0)
{
return null;
}
List<String> processedList = new List<String>();
for (int i = 0; i < list.Count; i += 2)
{
String key = list[i];
String value = list[i + 1];
if (key == null || value == null)
{
continue;
}
processedList.Add(key);
processedList.Add(value);
}
// create JSON array
var jsonArray = new JSONArray();
foreach (var listItem in processedList)
{
jsonArray.Add(new JSONData(listItem));
}
return jsonArray.ToString();
}
public static string GetJsonResponseCompact(Dictionary<string, object> dictionary)
{
string logJsonResponse = "";
if (dictionary == null)
{
return logJsonResponse;
}
else
{
int preLoopCounter = 0;
logJsonResponse += "{";
foreach (KeyValuePair<string, object> pair in dictionary)
{
String valueString = pair.Value as string;
if (valueString != null)
{
if (++preLoopCounter > 1)
{
logJsonResponse += ",";
}
// if the value is another JSON/complex-structure
if (valueString.StartsWith("{") && valueString.EndsWith("}"))
{
logJsonResponse += "\"" + pair.Key + "\"" + ":" + valueString;
}
else
{
logJsonResponse += "\"" + pair.Key + "\"" + ":" + "\"" + valueString + "\"";
}
continue;
}
Dictionary<string, object> valueDictionary = pair.Value as Dictionary<string, object>;
if (++preLoopCounter > 1)
{
logJsonResponse += ",";
}
logJsonResponse += "\"" + pair.Key + "\"" + ":";
logJsonResponse += GetJsonResponseCompact(valueDictionary);
}
logJsonResponse += "}";
}
return logJsonResponse;
}
public static String GetJsonString(JSONNode node, string key)
{
if (node == null)
{
return null;
}
// Access value object and cast it to JSONData.
var nodeValue = node[key] as JSONData;
if (nodeValue == null)
{
return null;
}
// https://github.com/adjust/unity_sdk/issues/137
if (nodeValue == "")
{
return null;
}
return nodeValue.Value;
}
public static void WriteJsonResponseDictionary(JSONClass jsonObject, Dictionary<string, object> output)
{
foreach (KeyValuePair<string, JSONNode> pair in jsonObject)
{
// Try to cast value as a complex object.
var subNode = pair.Value.AsObject;
var key = pair.Key;
// Value is not a complex object.
if (subNode == null)
{
var value = pair.Value.Value;
output.Add(key, value);
continue;
}
// Create new dictionary for complex type.
var newSubDictionary = new Dictionary<string, object>();
// Save it in the current dictionary.
output.Add(key, newSubDictionary);
// Recursive call to fill new dictionary.
WriteJsonResponseDictionary(subNode, newSubDictionary);
}
}
public static string TryGetValue(Dictionary<string, string> dictionary, string key)
{
string value;
if (dictionary.TryGetValue(key, out value))
{
// https://github.com/adjust/unity_sdk/issues/137
if (value == "")
{
return null;
}
return value;
}
return null;
}
public static int GetSkad4ConversionValue(string conversionValueUpdate)
{
var jsonNode = JSON.Parse(conversionValueUpdate);
if (jsonNode == null)
{
return -1;
}
string strConversionValue = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeySkadConversionValue);
int conversionValue = 0;
if (Int32.TryParse(strConversionValue, out conversionValue))
{
return conversionValue;
}
else
{
return -1;
}
}
public static string GetSkad4CoarseValue(string conversionValueUpdate)
{
var jsonNode = JSON.Parse(conversionValueUpdate);
if (jsonNode == null)
{
return null;
}
string coarseValue = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeySkadCoarseValue);
return coarseValue;
}
public static bool GetSkad4LockWindow(string conversionValueUpdate)
{
var jsonNode = JSON.Parse(conversionValueUpdate);
if (jsonNode == null)
{
return false;
}
bool lockWindow = Convert.ToBoolean(AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeySkadLockWindow));
return lockWindow;
}
#if UNITY_ANDROID
public static AndroidJavaObject TestOptionsMap2AndroidJavaObject(Dictionary<string, string> testOptionsMap, AndroidJavaObject ajoCurrentActivity)
{
AndroidJavaObject ajoTestOptions = new AndroidJavaObject("com.adjust.sdk.AdjustTestOptions");
ajoTestOptions.Set<String>("baseUrl", testOptionsMap[KeyTestOptionsBaseUrl]);
ajoTestOptions.Set<String>("gdprUrl", testOptionsMap[KeyTestOptionsGdprUrl]);
ajoTestOptions.Set<String>("subscriptionUrl", testOptionsMap[KeyTestOptionsSubscriptionUrl]);
ajoTestOptions.Set<String>("purchaseVerificationUrl", testOptionsMap[KeyTestOptionsPurchaseVerificationUrl]);
if (testOptionsMap.ContainsKey(KeyTestOptionsExtraPath) && !string.IsNullOrEmpty(testOptionsMap[KeyTestOptionsExtraPath]))
{
ajoTestOptions.Set<String>("basePath", testOptionsMap[KeyTestOptionsExtraPath]);
ajoTestOptions.Set<String>("gdprPath", testOptionsMap[KeyTestOptionsExtraPath]);
ajoTestOptions.Set<String>("subscriptionPath", testOptionsMap[KeyTestOptionsExtraPath]);
ajoTestOptions.Set<String>("purchaseVerificationPath", testOptionsMap[KeyTestOptionsExtraPath]);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsDeleteState) && ajoCurrentActivity != null)
{
ajoTestOptions.Set<AndroidJavaObject>("context", ajoCurrentActivity);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsUseTestConnectionOptions))
{
bool useTestConnectionOptions = testOptionsMap[KeyTestOptionsUseTestConnectionOptions].ToLower() == "true";
AndroidJavaObject ajoUseTestConnectionOptions = new AndroidJavaObject("java.lang.Boolean", useTestConnectionOptions);
ajoTestOptions.Set<AndroidJavaObject>("useTestConnectionOptions", ajoUseTestConnectionOptions);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsTimerIntervalInMilliseconds))
{
var timerIntervalInMilliseconds = long.Parse(testOptionsMap[KeyTestOptionsTimerIntervalInMilliseconds]);
AndroidJavaObject ajoTimerIntervalInMilliseconds = new AndroidJavaObject("java.lang.Long", timerIntervalInMilliseconds);
ajoTestOptions.Set<AndroidJavaObject>("timerIntervalInMilliseconds", ajoTimerIntervalInMilliseconds);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsTimerStartInMilliseconds))
{
var timerStartInMilliseconds = long.Parse(testOptionsMap[KeyTestOptionsTimerStartInMilliseconds]);
AndroidJavaObject ajoTimerStartInMilliseconds = new AndroidJavaObject("java.lang.Long", timerStartInMilliseconds);
ajoTestOptions.Set<AndroidJavaObject>("timerStartInMilliseconds", ajoTimerStartInMilliseconds);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsSessionIntervalInMilliseconds))
{
var sessionIntervalInMilliseconds = long.Parse(testOptionsMap[KeyTestOptionsSessionIntervalInMilliseconds]);
AndroidJavaObject ajoSessionIntervalInMilliseconds = new AndroidJavaObject("java.lang.Long", sessionIntervalInMilliseconds);
ajoTestOptions.Set<AndroidJavaObject>("sessionIntervalInMilliseconds", ajoSessionIntervalInMilliseconds);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsSubsessionIntervalInMilliseconds))
{
var subsessionIntervalInMilliseconds = long.Parse(testOptionsMap[KeyTestOptionsSubsessionIntervalInMilliseconds]);
AndroidJavaObject ajoSubsessionIntervalInMilliseconds = new AndroidJavaObject("java.lang.Long", subsessionIntervalInMilliseconds);
ajoTestOptions.Set<AndroidJavaObject>("subsessionIntervalInMilliseconds", ajoSubsessionIntervalInMilliseconds);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsTeardown))
{
bool teardown = testOptionsMap[KeyTestOptionsTeardown].ToLower() == "true";
AndroidJavaObject ajoTeardown = new AndroidJavaObject("java.lang.Boolean", teardown);
ajoTestOptions.Set<AndroidJavaObject>("teardown", ajoTeardown);
}
if (testOptionsMap.ContainsKey(KeyTestOptionsNoBackoffWait))
{
bool noBackoffWait = testOptionsMap[KeyTestOptionsNoBackoffWait].ToLower() == "true";
AndroidJavaObject ajoNoBackoffWait = new AndroidJavaObject("java.lang.Boolean", noBackoffWait);
ajoTestOptions.Set<AndroidJavaObject>("noBackoffWait", ajoNoBackoffWait);
}
return ajoTestOptions;
}
#endif
}
}