update: 更新 UnityPackage -> 4.38.0

dev
胡宇飞 2024-04-16 13:30:31 +08:00
parent 7fc563e567
commit 2425e6916b
16 changed files with 295 additions and 57 deletions

View File

@ -8,7 +8,7 @@ namespace com.adjust.sdk
#if UNITY_ANDROID #if UNITY_ANDROID
public class AdjustAndroid public class AdjustAndroid
{ {
private const string sdkPrefix = "unity4.36.0"; private const string sdkPrefix = "unity4.38.0";
private static bool launchDeferredDeeplink = true; private static bool launchDeferredDeeplink = true;
private static AndroidJavaClass ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); private static AndroidJavaClass ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust");
private static AndroidJavaObject ajoCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); private static AndroidJavaObject ajoCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
@ -19,6 +19,7 @@ namespace com.adjust.sdk
private static SessionTrackingFailedListener onSessionTrackingFailedListener; private static SessionTrackingFailedListener onSessionTrackingFailedListener;
private static SessionTrackingSucceededListener onSessionTrackingSucceededListener; private static SessionTrackingSucceededListener onSessionTrackingSucceededListener;
private static VerificationInfoListener onVerificationInfoListener; private static VerificationInfoListener onVerificationInfoListener;
private static DeeplinkResolutionListener onDeeplinkResolvedListener;
public static void Start(AdjustConfig adjustConfig) public static void Start(AdjustConfig adjustConfig)
{ {
@ -684,6 +685,14 @@ namespace com.adjust.sdk
ajcAdjust.CallStatic("verifyPurchase", ajoPurchase, onVerificationInfoListener); ajcAdjust.CallStatic("verifyPurchase", ajoPurchase, onVerificationInfoListener);
} }
public static void ProcessDeeplink(string url, Action<string> resolvedLinkCallback)
{
onDeeplinkResolvedListener = new DeeplinkResolutionListener(resolvedLinkCallback);
AndroidJavaClass ajcUri = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject ajoUri = ajcUri.CallStatic<AndroidJavaObject>("parse", url);
ajcAdjust.CallStatic("processDeeplink", ajoUri, ajoCurrentActivity, onDeeplinkResolvedListener);
}
// Used for testing only. // Used for testing only.
public static void SetTestOptions(Dictionary<string, string> testOptions) public static void SetTestOptions(Dictionary<string, string> testOptions)
{ {
@ -1024,6 +1033,24 @@ namespace com.adjust.sdk
} }
} }
private class DeeplinkResolutionListener : AndroidJavaProxy
{
private Action<string> callback;
public DeeplinkResolutionListener(Action<string> pCallback) : base("com.adjust.sdk.OnDeeplinkResolvedListener")
{
this.callback = pCallback;
}
public void onDeeplinkResolved(string resolvedLink)
{
if (callback != null)
{
callback(resolvedLink);
}
}
}
// Private & helper methods. // Private & helper methods.
private static bool IsAppSecretSet(AdjustConfig adjustConfig) private static bool IsAppSecretSet(AdjustConfig adjustConfig)
{ {

Binary file not shown.

View File

@ -11,9 +11,9 @@ public class AdjustSettings : ScriptableObject
[SerializeField] [SerializeField]
private bool _iOSFrameworkAdSupport = true; private bool _iOSFrameworkAdSupport = true;
[SerializeField] [SerializeField]
private bool _iOSFrameworkAdServices = true; private bool _iOSFrameworkAdServices = false;
[SerializeField] [SerializeField]
private bool _iOSFrameworkAppTrackingTransparency = true; private bool _iOSFrameworkAppTrackingTransparency = false;
[SerializeField] [SerializeField]
private bool _iOSFrameworkStoreKit = false; private bool _iOSFrameworkStoreKit = false;
[SerializeField] [SerializeField]
@ -50,11 +50,7 @@ public class AdjustSettings : ScriptableObject
{ {
return instance; return instance;
} }
// var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]).Replace("AdjustSettings.cs", "AdjustSettings.asset"); var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]).Replace("AdjustSettings.cs", "AdjustSettings.asset");
// ************ Auto fixed by Guru Adjust ************
if(!System.IO.Directory.Exists("Assets/Guru/Editor")) System.IO.Directory.CreateDirectory("Assets/Guru/Editor");
var assetPath = "Assets/Guru/Editor/AdjustSettings.asset";
// ************ Auto fixed by Guru Adjust ************
AssetDatabase.CreateAsset(instance, assetPath); AssetDatabase.CreateAsset(instance, assetPath);
} }

View File

@ -86,6 +86,7 @@ namespace com.adjust.sdk
private static Action<string> skadUpdateConversionValueDelegate = null; private static Action<string> skadUpdateConversionValueDelegate = null;
private static Action<string> skad4UpdateConversionValueDelegate = null; private static Action<string> skad4UpdateConversionValueDelegate = null;
private static Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate = null; private static Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate = null;
private static Action<string> deeplinkResolutionDelegate = null;
#endif #endif
void Awake() void Awake()
@ -959,6 +960,28 @@ namespace com.adjust.sdk
#endif #endif
} }
public static void processDeeplink(
string url,
Action<string> resolvedLinkDelegate,
string sceneName = "Adjust")
{
if (IsEditor())
{
return;
}
#if UNITY_IOS
Adjust.deeplinkResolutionDelegate = resolvedLinkDelegate;
AdjustiOS.ProcessDeeplink(url, sceneName);
#elif UNITY_ANDROID
AdjustAndroid.ProcessDeeplink(url, resolvedLinkDelegate);
#elif (UNITY_WSA || UNITY_WP8)
Debug.Log("[Adjust]: Deep link processing is only supported for Android and iOS platform.");
#else
Debug.Log(errorMsgPlatform);
#endif
}
#if UNITY_IOS #if UNITY_IOS
public void GetNativeAttribution(string attributionData) public void GetNativeAttribution(string attributionData)
{ {
@ -1178,6 +1201,22 @@ namespace com.adjust.sdk
var verificationInfo = new AdjustPurchaseVerificationInfo(verificationInfoData); var verificationInfo = new AdjustPurchaseVerificationInfo(verificationInfoData);
Adjust.verificationInfoDelegate(verificationInfo); Adjust.verificationInfoDelegate(verificationInfo);
} }
public void GetNativeResolvedLink(string resolvedLink)
{
if (IsEditor())
{
return;
}
if (Adjust.deeplinkResolutionDelegate == null)
{
Debug.Log("[Adjust]: Deep link reoslution delegate was not set.");
return;
}
Adjust.deeplinkResolutionDelegate(resolvedLink);
}
#endif #endif
private static bool IsEditor() private static bool IsEditor()

View File

@ -23,6 +23,7 @@ namespace com.adjust.sdk
public const string AdjustAdRevenueSourcePublisher = "publisher_sdk"; public const string AdjustAdRevenueSourcePublisher = "publisher_sdk";
public const string AdjustAdRevenueSourceTopOn = "topon_sdk"; public const string AdjustAdRevenueSourceTopOn = "topon_sdk";
public const string AdjustAdRevenueSourceAdx = "adx_sdk"; public const string AdjustAdRevenueSourceAdx = "adx_sdk";
public const string AdjustAdRevenueTradPlus = "tradplus_sdk";
internal string appToken; internal string appToken;
internal string sceneName; internal string sceneName;
@ -43,6 +44,7 @@ namespace com.adjust.sdk
internal bool? playStoreKidsAppEnabled; internal bool? playStoreKidsAppEnabled;
internal bool? allowSuppressLogLevel; internal bool? allowSuppressLogLevel;
internal bool? needsCost; internal bool? needsCost;
internal bool? readDeviceInfoOnceEnabled;
internal bool launchDeferredDeeplink; internal bool launchDeferredDeeplink;
internal AdjustLogLevel? logLevel; internal AdjustLogLevel? logLevel;
internal AdjustEnvironment environment; internal AdjustEnvironment environment;
@ -62,7 +64,6 @@ namespace com.adjust.sdk
internal string preinstallFilePath; internal string preinstallFilePath;
internal bool? finalAndroidAttributionEnabled; internal bool? finalAndroidAttributionEnabled;
internal string fbAppId; internal string fbAppId;
internal bool? readDeviceInfoOnceEnabled;
// iOS specific members // iOS specific members
internal bool? allowAdServicesInfoReading; internal bool? allowAdServicesInfoReading;
internal bool? allowIdfaReading; internal bool? allowIdfaReading;

View File

@ -15,6 +15,7 @@ namespace com.adjust.sdk
internal List<string> callbackList; internal List<string> callbackList;
// iOS specific members // iOS specific members
internal string receipt; internal string receipt;
internal string receiptBase64;
internal bool isReceiptSet; internal bool isReceiptSet;
// Android specific members // Android specific members
internal string purchaseToken; internal string purchaseToken;
@ -81,6 +82,11 @@ namespace com.adjust.sdk
this.receipt = receipt; this.receipt = receipt;
} }
public void setReceiptBase64(string receiptBase64)
{
this.receiptBase64 = receiptBase64;
}
// Android specific methods // Android specific methods
public void setPurchaseToken(string purchaseToken) public void setPurchaseToken(string purchaseToken)
{ {

View File

@ -36,6 +36,7 @@ namespace com.adjust.sdk
public static string KeyTestOptionsGdprUrl = "gdprUrl"; public static string KeyTestOptionsGdprUrl = "gdprUrl";
public static string KeyTestOptionsSubscriptionUrl = "subscriptionUrl"; public static string KeyTestOptionsSubscriptionUrl = "subscriptionUrl";
public static string KeyTestOptionsPurchaseVerificationUrl = "purchaseVerificationUrl"; public static string KeyTestOptionsPurchaseVerificationUrl = "purchaseVerificationUrl";
public static string KeyTestOptionsOverwriteUrl = "urlOverwrite";
public static string KeyTestOptionsExtraPath = "extraPath"; public static string KeyTestOptionsExtraPath = "extraPath";
public static string KeyTestOptionsBasePath = "basePath"; public static string KeyTestOptionsBasePath = "basePath";
public static string KeyTestOptionsGdprPath = "gdprPath"; public static string KeyTestOptionsGdprPath = "gdprPath";
@ -48,6 +49,8 @@ namespace com.adjust.sdk
public static string KeyTestOptionsTeardown = "teardown"; public static string KeyTestOptionsTeardown = "teardown";
public static string KeyTestOptionsNoBackoffWait = "noBackoffWait"; public static string KeyTestOptionsNoBackoffWait = "noBackoffWait";
public static string KeyTestOptionsAdServicesFrameworkEnabled = "adServicesFrameworkEnabled"; public static string KeyTestOptionsAdServicesFrameworkEnabled = "adServicesFrameworkEnabled";
public static string KeyTestOptionsAttStatus = "attStatus";
public static string KeyTestOptionsIdfa = "idfa";
public static int ConvertLogLevel(AdjustLogLevel? logLevel) public static int ConvertLogLevel(AdjustLogLevel? logLevel)
{ {

View File

@ -17,7 +17,7 @@ namespace com.adjust.sdk
{ {
public class AdjustWindows public class AdjustWindows
{ {
private const string sdkPrefix = "unity4.36.0"; private const string sdkPrefix = "unity4.38.0";
private static bool appLaunched = false; private static bool appLaunched = false;
public static void Start(AdjustConfig adjustConfig) public static void Start(AdjustConfig adjustConfig)

View File

@ -291,4 +291,9 @@
*/ */
@property (nonatomic, assign) BOOL coppaCompliantEnabled; @property (nonatomic, assign) BOOL coppaCompliantEnabled;
/**
* @brief Enables caching of device ids to read it only once
*/
@property (nonatomic, assign) BOOL readDeviceInfoOnceEnabled;
@end @end

View File

@ -2,7 +2,7 @@
// Adjust.h // Adjust.h
// Adjust SDK // Adjust SDK
// //
// V4.36.0 // V4.38.0
// Created by Christian Wellenbrock (@wellle) on 23rd July 2013. // Created by Christian Wellenbrock (@wellle) on 23rd July 2013.
// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved. // Copyright (c) 2012-2021 Adjust GmbH. All rights reserved.
// //
@ -17,17 +17,18 @@
#import "ADJPurchase.h" #import "ADJPurchase.h"
#import "ADJPurchaseVerificationResult.h" #import "ADJPurchaseVerificationResult.h"
typedef void(^AdjustResolvedDeeplinkBlock)(NSString * _Nonnull resolvedLink);
@interface AdjustTestOptions : NSObject @interface AdjustTestOptions : NSObject
@property (nonatomic, copy, nullable) NSString *baseUrl; @property (nonatomic, copy, nullable) NSString *urlOverwrite;
@property (nonatomic, copy, nullable) NSString *gdprUrl;
@property (nonatomic, copy, nullable) NSString *subscriptionUrl;
@property (nonatomic, copy, nullable) NSString *purchaseVerificationUrl;
@property (nonatomic, copy, nullable) NSString *extraPath; @property (nonatomic, copy, nullable) NSString *extraPath;
@property (nonatomic, copy, nullable) NSNumber *timerIntervalInMilliseconds; @property (nonatomic, copy, nullable) NSNumber *timerIntervalInMilliseconds;
@property (nonatomic, copy, nullable) NSNumber *timerStartInMilliseconds; @property (nonatomic, copy, nullable) NSNumber *timerStartInMilliseconds;
@property (nonatomic, copy, nullable) NSNumber *sessionIntervalInMilliseconds; @property (nonatomic, copy, nullable) NSNumber *sessionIntervalInMilliseconds;
@property (nonatomic, copy, nullable) NSNumber *subsessionIntervalInMilliseconds; @property (nonatomic, copy, nullable) NSNumber *subsessionIntervalInMilliseconds;
@property (nonatomic, copy, nullable) NSNumber *attStatusInt;
@property (nonatomic, copy, nullable) NSString *idfa;
@property (nonatomic, assign) BOOL teardown; @property (nonatomic, assign) BOOL teardown;
@property (nonatomic, assign) BOOL deleteState; @property (nonatomic, assign) BOOL deleteState;
@property (nonatomic, assign) BOOL noBackoffWait; @property (nonatomic, assign) BOOL noBackoffWait;
@ -56,6 +57,7 @@ extern NSString * __nonnull const ADJAdRevenueSourceHeliumChartboost;
extern NSString * __nonnull const ADJAdRevenueSourcePublisher; extern NSString * __nonnull const ADJAdRevenueSourcePublisher;
extern NSString * __nonnull const ADJAdRevenueSourceTopOn; extern NSString * __nonnull const ADJAdRevenueSourceTopOn;
extern NSString * __nonnull const ADJAdRevenueSourceADX; extern NSString * __nonnull const ADJAdRevenueSourceADX;
extern NSString * __nonnull const ADJAdRevenueSourceTradplus;
/** /**
* Constants for country app's URL strategies. * Constants for country app's URL strategies.
@ -137,6 +139,15 @@ extern NSString * __nonnull const ADJDataResidencyUS;
*/ */
+ (void)appWillOpenUrl:(nonnull NSURL *)url; + (void)appWillOpenUrl:(nonnull NSURL *)url;
/**
* @brief Process the deep link that has opened an app and potentially get a resolved link.
*
* @param deeplink URL object which contains info about adjust deep link.
* @param completionHandler Completion handler where either resolved or echoed deep link will be sent.
*/
+ (void)processDeeplink:(nonnull NSURL *)deeplink
completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler;
/** /**
* @brief Set the device token used by push notifications. * @brief Set the device token used by push notifications.
* *
@ -407,6 +418,9 @@ extern NSString * __nonnull const ADJDataResidencyUS;
- (void)appWillOpenUrl:(nonnull NSURL *)url; - (void)appWillOpenUrl:(nonnull NSURL *)url;
- (void)processDeeplink:(nonnull NSURL *)deeplink
completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler;
- (void)setOfflineMode:(BOOL)enabled; - (void)setOfflineMode:(BOOL)enabled;
- (void)setDeviceToken:(nonnull NSData *)deviceToken; - (void)setDeviceToken:(nonnull NSData *)deviceToken;

Binary file not shown.

View File

@ -101,6 +101,7 @@ extern "C"
int linkMeEnabled, int linkMeEnabled,
int needsCost, int needsCost,
int coppaCompliant, int coppaCompliant,
int readDeviceInfoOnce,
int64_t secretId, int64_t secretId,
int64_t info1, int64_t info1,
int64_t info2, int64_t info2,
@ -222,6 +223,11 @@ extern "C"
[adjustConfig setCoppaCompliantEnabled:(BOOL)coppaCompliant]; [adjustConfig setCoppaCompliantEnabled:(BOOL)coppaCompliant];
} }
// Read device info just once.
if (readDeviceInfoOnce != -1) {
[adjustConfig setReadDeviceInfoOnceEnabled:(BOOL)readDeviceInfoOnce];
}
// User agent. // User agent.
if (stringUserAgent != nil) { if (stringUserAgent != nil) {
[adjustConfig setUserAgent:stringUserAgent]; [adjustConfig setUserAgent:stringUserAgent];
@ -270,6 +276,7 @@ extern "C"
double revenue, double revenue,
const char* currency, const char* currency,
const char* receipt, const char* receipt,
const char* receiptBase64,
const char* productId, const char* productId,
const char* transactionId, const char* transactionId,
const char* callbackId, const char* callbackId,
@ -324,6 +331,14 @@ extern "C"
[event setReceipt:[stringReceipt dataUsingEncoding:NSUTF8StringEncoding]]; [event setReceipt:[stringReceipt dataUsingEncoding:NSUTF8StringEncoding]];
} }
// Base64 encoded receipt.
if (receiptBase64 != NULL) {
// If both (receipt and receiptBase64) set, receiptBase64 will be used.
NSString *stringReceiptBase64 = [NSString stringWithUTF8String:receiptBase64];
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:stringReceiptBase64 options:0];
[event setReceipt:decodedData];
}
// Callback ID. // Callback ID.
if (callbackId != NULL) { if (callbackId != NULL) {
NSString *stringCallbackId = [NSString stringWithUTF8String:callbackId]; NSString *stringCallbackId = [NSString stringWithUTF8String:callbackId];
@ -848,7 +863,8 @@ extern "C"
// Receipt. // Receipt.
if (receipt != NULL) { if (receipt != NULL) {
dataReceipt = [[NSString stringWithUTF8String:receipt] dataUsingEncoding:NSUTF8StringEncoding]; NSString *stringReceiptBase64 = [NSString stringWithUTF8String:receipt];
dataReceipt = [[NSData alloc] initWithBase64EncodedString:stringReceiptBase64 options:0];
} }
// Scene name. // Scene name.
@ -881,10 +897,34 @@ extern "C"
}]; }];
} }
void _AdjustSetTestOptions(const char* baseUrl, void _AdjustProcessDeeplink(const char* url, const char* sceneName) {
const char* gdprUrl, NSString *strSceneName = isStringValid(sceneName) == true ? [NSString stringWithUTF8String:sceneName] : nil;
const char* subscriptionUrl, if (url != NULL) {
const char* purchaseVerificationUrl, NSString *stringUrl = [NSString stringWithUTF8String:url];
NSURL *nsUrl;
if ([NSString instancesRespondToSelector:@selector(stringByAddingPercentEncodingWithAllowedCharacters:)]) {
nsUrl = [NSURL URLWithString:[stringUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]];
} else {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
nsUrl = [NSURL URLWithString:[stringUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
#pragma clang diagnostic pop
[Adjust processDeeplink:nsUrl completionHandler:^(NSString * _Nonnull resolvedLink) {
if (strSceneName == nil) {
return;
}
if (resolvedLink == nil) {
return;
}
const char* resolvedLinkCString = [resolvedLink UTF8String];
UnitySendMessage([strSceneName UTF8String], "GetNativeResolvedLink", resolvedLinkCString);
}];
}
}
void _AdjustSetTestOptions(const char* overwriteUrl,
const char* extraPath, const char* extraPath,
long timerIntervalInMilliseconds, long timerIntervalInMilliseconds,
long timerStartInMilliseconds, long timerStartInMilliseconds,
@ -893,38 +933,29 @@ extern "C"
int teardown, int teardown,
int deleteState, int deleteState,
int noBackoffWait, int noBackoffWait,
int adServicesFrameworkEnabled) { int adServicesFrameworkEnabled,
int attStatus,
const char *idfa) {
AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init]; AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init];
NSString *stringBaseUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:baseUrl] : nil; NSString *stringOverwriteUrl = isStringValid(overwriteUrl) == true ? [NSString stringWithUTF8String:overwriteUrl] : nil;
if (stringBaseUrl != nil) { if (stringOverwriteUrl != nil) {
[testOptions setBaseUrl:stringBaseUrl]; [testOptions setUrlOverwrite:stringOverwriteUrl];
} }
NSString *stringGdprUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:gdprUrl] : nil;
if (stringGdprUrl != nil) {
[testOptions setGdprUrl:stringGdprUrl];
}
NSString *stringSubscriptionUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:subscriptionUrl] : nil;
if (stringSubscriptionUrl != nil) {
[testOptions setSubscriptionUrl:stringSubscriptionUrl];
}
NSString *stringPurchaseVerificationUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:purchaseVerificationUrl] : nil;
if (stringPurchaseVerificationUrl != nil) {
[testOptions setPurchaseVerificationUrl:stringPurchaseVerificationUrl];
}
NSString *stringExtraPath = isStringValid(extraPath) == true ? [NSString stringWithUTF8String:extraPath] : nil; NSString *stringExtraPath = isStringValid(extraPath) == true ? [NSString stringWithUTF8String:extraPath] : nil;
if (stringExtraPath != nil && [stringExtraPath length] > 0) { if (stringExtraPath != nil && [stringExtraPath length] > 0) {
[testOptions setExtraPath:stringExtraPath]; [testOptions setExtraPath:stringExtraPath];
} }
NSString *stringIdfa = isStringValid(idfa) == true ? [NSString stringWithUTF8String:idfa] : nil;
if (stringIdfa != nil && [stringIdfa length] > 0) {
[testOptions setIdfa:stringIdfa];
}
testOptions.timerIntervalInMilliseconds = [NSNumber numberWithLong:timerIntervalInMilliseconds]; testOptions.timerIntervalInMilliseconds = [NSNumber numberWithLong:timerIntervalInMilliseconds];
testOptions.timerStartInMilliseconds = [NSNumber numberWithLong:timerStartInMilliseconds]; testOptions.timerStartInMilliseconds = [NSNumber numberWithLong:timerStartInMilliseconds];
testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithLong:sessionIntervalInMilliseconds]; testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithLong:sessionIntervalInMilliseconds];
testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithLong:subsessionIntervalInMilliseconds]; testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithLong:subsessionIntervalInMilliseconds];
testOptions.attStatusInt = [NSNumber numberWithInt:attStatus];
if (teardown != -1) { if (teardown != -1) {
[AdjustUnityDelegate teardown]; [AdjustUnityDelegate teardown];

View File

@ -8,7 +8,7 @@ namespace com.adjust.sdk
#if UNITY_IOS #if UNITY_IOS
public class AdjustiOS public class AdjustiOS
{ {
private const string sdkPrefix = "unity4.36.0"; private const string sdkPrefix = "unity4.38.0";
[DllImport("__Internal")] [DllImport("__Internal")]
private static extern void _AdjustLaunchApp( private static extern void _AdjustLaunchApp(
@ -31,6 +31,7 @@ namespace com.adjust.sdk
int linkMeEnabled, int linkMeEnabled,
int needsCost, int needsCost,
int coppaCompliant, int coppaCompliant,
int readDeviceInfoOnce,
long secretId, long secretId,
long info1, long info1,
long info2, long info2,
@ -54,6 +55,7 @@ namespace com.adjust.sdk
double revenue, double revenue,
string currency, string currency,
string receipt, string receipt,
string receiptBase64,
string productId, string productId,
string transactionId, string transactionId,
string callbackId, string callbackId,
@ -153,10 +155,7 @@ namespace com.adjust.sdk
[DllImport("__Internal")] [DllImport("__Internal")]
private static extern void _AdjustSetTestOptions( private static extern void _AdjustSetTestOptions(
string baseUrl, string overwriteUrl,
string gdprUrl,
string subscriptionUrl,
string purchaseVerificationUrl,
string extraPath, string extraPath,
long timerIntervalInMilliseconds, long timerIntervalInMilliseconds,
long timerStartInMilliseconds, long timerStartInMilliseconds,
@ -165,7 +164,9 @@ namespace com.adjust.sdk
int teardown, int teardown,
int deleteState, int deleteState,
int noBackoffWait, int noBackoffWait,
int adServicesFrameworkEnabled); int adServicesFrameworkEnabled,
int attStatus,
string idfa);
[DllImport("__Internal")] [DllImport("__Internal")]
private static extern void _AdjustRequestTrackingAuthorizationWithCompletionHandler(string sceneName); private static extern void _AdjustRequestTrackingAuthorizationWithCompletionHandler(string sceneName);
@ -201,6 +202,9 @@ namespace com.adjust.sdk
string receipt, string receipt,
string sceneName); string sceneName);
[DllImport("__Internal")]
private static extern void _AdjustProcessDeeplink(string url, string sceneName);
public AdjustiOS() {} public AdjustiOS() {}
public static void Start(AdjustConfig adjustConfig) public static void Start(AdjustConfig adjustConfig)
@ -231,6 +235,7 @@ namespace com.adjust.sdk
int linkMeEnabled = AdjustUtils.ConvertBool(adjustConfig.linkMeEnabled); int linkMeEnabled = AdjustUtils.ConvertBool(adjustConfig.linkMeEnabled);
int needsCost = AdjustUtils.ConvertBool(adjustConfig.needsCost); int needsCost = AdjustUtils.ConvertBool(adjustConfig.needsCost);
int coppaCompliant = AdjustUtils.ConvertBool(adjustConfig.coppaCompliantEnabled); int coppaCompliant = AdjustUtils.ConvertBool(adjustConfig.coppaCompliantEnabled);
int readDeviceInfoOnce = AdjustUtils.ConvertBool(adjustConfig.readDeviceInfoOnceEnabled);
int isAttributionCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getAttributionChangedDelegate() != null); int isAttributionCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getAttributionChangedDelegate() != null);
int isEventSuccessCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventSuccessDelegate() != null); int isEventSuccessCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventSuccessDelegate() != null);
int isEventFailureCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventFailureDelegate() != null); int isEventFailureCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventFailureDelegate() != null);
@ -260,6 +265,7 @@ namespace com.adjust.sdk
linkMeEnabled, linkMeEnabled,
needsCost, needsCost,
coppaCompliant, coppaCompliant,
readDeviceInfoOnce,
secretId, secretId,
info1, info1,
info2, info2,
@ -285,13 +291,25 @@ namespace com.adjust.sdk
string eventToken = adjustEvent.eventToken; string eventToken = adjustEvent.eventToken;
string currency = adjustEvent.currency; string currency = adjustEvent.currency;
string receipt = adjustEvent.receipt; string receipt = adjustEvent.receipt;
string receiptBase64 = adjustEvent.receiptBase64;
string productId = adjustEvent.productId; string productId = adjustEvent.productId;
string transactionId = adjustEvent.transactionId; string transactionId = adjustEvent.transactionId;
string callbackId = adjustEvent.callbackId; string callbackId = adjustEvent.callbackId;
string stringJsonCallbackParameters = AdjustUtils.ConvertListToJson(adjustEvent.callbackList); string stringJsonCallbackParameters = AdjustUtils.ConvertListToJson(adjustEvent.callbackList);
string stringJsonPartnerParameters = AdjustUtils.ConvertListToJson(adjustEvent.partnerList); string stringJsonPartnerParameters = AdjustUtils.ConvertListToJson(adjustEvent.partnerList);
_AdjustTrackEvent(eventToken, revenue, currency, receipt, productId, transactionId, callbackId, isReceiptSet, stringJsonCallbackParameters, stringJsonPartnerParameters); _AdjustTrackEvent(
eventToken,
revenue,
currency,
receipt,
receiptBase64,
productId,
transactionId,
callbackId,
isReceiptSet,
stringJsonCallbackParameters,
stringJsonPartnerParameters);
} }
public static void SetEnabled(bool enabled) public static void SetEnabled(bool enabled)
@ -526,14 +544,17 @@ namespace com.adjust.sdk
cSceneName); cSceneName);
} }
public static void ProcessDeeplink(string url, string sceneName)
{
_AdjustProcessDeeplink(url, sceneName);
}
// Used for testing only. // Used for testing only.
public static void SetTestOptions(Dictionary<string, string> testOptions) public static void SetTestOptions(Dictionary<string, string> testOptions)
{ {
string baseUrl = testOptions[AdjustUtils.KeyTestOptionsBaseUrl]; string overwriteUrl = testOptions[AdjustUtils.KeyTestOptionsOverwriteUrl];
string gdprUrl = testOptions[AdjustUtils.KeyTestOptionsGdprUrl];
string subscriptionUrl = testOptions[AdjustUtils.KeyTestOptionsSubscriptionUrl];
string purchaseVerificationUrl = testOptions[AdjustUtils.KeyTestOptionsPurchaseVerificationUrl];
string extraPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsExtraPath) ? testOptions[AdjustUtils.KeyTestOptionsExtraPath] : null; string extraPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsExtraPath) ? testOptions[AdjustUtils.KeyTestOptionsExtraPath] : null;
string idfa = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsIdfa) ? testOptions[AdjustUtils.KeyTestOptionsIdfa] : null;
long timerIntervalMilis = -1; long timerIntervalMilis = -1;
long timerStartMilis = -1; long timerStartMilis = -1;
long sessionIntMilis = -1; long sessionIntMilis = -1;
@ -542,6 +563,7 @@ namespace com.adjust.sdk
bool deleteState = false; bool deleteState = false;
bool noBackoffWait = false; bool noBackoffWait = false;
bool adServicesFrameworkEnabled = false; bool adServicesFrameworkEnabled = false;
int attStatus = -1;
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds)) if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds))
{ {
@ -575,21 +597,24 @@ namespace com.adjust.sdk
{ {
adServicesFrameworkEnabled = testOptions[AdjustUtils.KeyTestOptionsAdServicesFrameworkEnabled].ToLower() == "true"; adServicesFrameworkEnabled = testOptions[AdjustUtils.KeyTestOptionsAdServicesFrameworkEnabled].ToLower() == "true";
} }
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsAttStatus))
{
attStatus = int.Parse(testOptions[AdjustUtils.KeyTestOptionsAttStatus]);
}
_AdjustSetTestOptions( _AdjustSetTestOptions(
baseUrl, overwriteUrl,
gdprUrl,
subscriptionUrl,
purchaseVerificationUrl,
extraPath, extraPath,
timerIntervalMilis, timerIntervalMilis,
timerStartMilis, timerStartMilis,
sessionIntMilis, sessionIntMilis,
subsessionIntMilis, subsessionIntMilis,
AdjustUtils.ConvertBool(teardown), AdjustUtils.ConvertBool(teardown),
AdjustUtils.ConvertBool(deleteState), AdjustUtils.ConvertBool(deleteState),
AdjustUtils.ConvertBool(noBackoffWait), AdjustUtils.ConvertBool(noBackoffWait),
AdjustUtils.ConvertBool(adServicesFrameworkEnabled)); AdjustUtils.ConvertBool(adServicesFrameworkEnabled),
attStatus,
idfa);
} }
public static void TrackSubsessionStart(string testingArgument = null) public static void TrackSubsessionStart(string testingArgument = null)

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1caf9524837164956bbd913fc07df697
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<true/>
<key>NSPrivacyTrackingDomains</key>
<array>
<string>https://consent.adjust.com</string>
<string>https://consent.adjust.net.in</string>
<string>https://consent.adjust.world</string>
<string>https://consent.adjust.cn</string>
<string>https://consent.eu.adjust.com</string>
<string>https://consent.tr.adjust.com</string>
<string>https://consent.us.adjust.com</string>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeAdvertisingData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<true/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising</string>
<string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
<string>NSPrivacyCollectedDataTypePurposeProductPersonalization</string>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 50d6b4f70c684250a7c697555a855ad0
timeCreated: 1713243654