Compare commits
5 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
ed966a1395 | |
|
|
e90ad0d217 | |
|
|
9a9c30a2e3 | |
|
|
8df5245303 | |
|
|
2425e6916b |
|
|
@ -8,7 +8,7 @@ namespace com.adjust.sdk
|
|||
#if UNITY_ANDROID
|
||||
public class AdjustAndroid
|
||||
{
|
||||
private const string sdkPrefix = "unity4.36.0";
|
||||
private const string sdkPrefix = "unity4.38.0";
|
||||
private static bool launchDeferredDeeplink = true;
|
||||
private static AndroidJavaClass ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust");
|
||||
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 SessionTrackingSucceededListener onSessionTrackingSucceededListener;
|
||||
private static VerificationInfoListener onVerificationInfoListener;
|
||||
private static DeeplinkResolutionListener onDeeplinkResolvedListener;
|
||||
|
||||
public static void Start(AdjustConfig adjustConfig)
|
||||
{
|
||||
|
|
@ -684,6 +685,14 @@ namespace com.adjust.sdk
|
|||
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.
|
||||
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 static bool IsAppSecretSet(AdjustConfig adjustConfig)
|
||||
{
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -315,6 +315,9 @@ public class AdjustEditor : AssetPostprocessor
|
|||
private static void AddUniversalLinkDomains(PBXProject project, string xCodeProjectPath, string xCodeTarget)
|
||||
{
|
||||
string entitlementsFileName = "Unity-iPhone.entitlements";
|
||||
#if UNITY_2021_3
|
||||
entitlementsFileName = "Unity-iPhone/Unity-iPhone.entitlements";
|
||||
#endif
|
||||
|
||||
Debug.Log("[Adjust]: Adding associated domains to entitlements file.");
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ namespace com.adjust.sdk
|
|||
private static Action<string> skadUpdateConversionValueDelegate = null;
|
||||
private static Action<string> skad4UpdateConversionValueDelegate = null;
|
||||
private static Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate = null;
|
||||
private static Action<string> deeplinkResolutionDelegate = null;
|
||||
#endif
|
||||
|
||||
void Awake()
|
||||
|
|
@ -959,6 +960,28 @@ namespace com.adjust.sdk
|
|||
#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
|
||||
public void GetNativeAttribution(string attributionData)
|
||||
{
|
||||
|
|
@ -1178,6 +1201,22 @@ namespace com.adjust.sdk
|
|||
var verificationInfo = new AdjustPurchaseVerificationInfo(verificationInfoData);
|
||||
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
|
||||
|
||||
private static bool IsEditor()
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ namespace com.adjust.sdk
|
|||
public const string AdjustAdRevenueSourcePublisher = "publisher_sdk";
|
||||
public const string AdjustAdRevenueSourceTopOn = "topon_sdk";
|
||||
public const string AdjustAdRevenueSourceAdx = "adx_sdk";
|
||||
public const string AdjustAdRevenueTradPlus = "tradplus_sdk";
|
||||
|
||||
internal string appToken;
|
||||
internal string sceneName;
|
||||
|
|
@ -43,6 +44,7 @@ namespace com.adjust.sdk
|
|||
internal bool? playStoreKidsAppEnabled;
|
||||
internal bool? allowSuppressLogLevel;
|
||||
internal bool? needsCost;
|
||||
internal bool? readDeviceInfoOnceEnabled;
|
||||
internal bool launchDeferredDeeplink;
|
||||
internal AdjustLogLevel? logLevel;
|
||||
internal AdjustEnvironment environment;
|
||||
|
|
@ -62,7 +64,6 @@ namespace com.adjust.sdk
|
|||
internal string preinstallFilePath;
|
||||
internal bool? finalAndroidAttributionEnabled;
|
||||
internal string fbAppId;
|
||||
internal bool? readDeviceInfoOnceEnabled;
|
||||
// iOS specific members
|
||||
internal bool? allowAdServicesInfoReading;
|
||||
internal bool? allowIdfaReading;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace com.adjust.sdk
|
|||
internal List<string> callbackList;
|
||||
// iOS specific members
|
||||
internal string receipt;
|
||||
internal string receiptBase64;
|
||||
internal bool isReceiptSet;
|
||||
// Android specific members
|
||||
internal string purchaseToken;
|
||||
|
|
@ -81,6 +82,11 @@ namespace com.adjust.sdk
|
|||
this.receipt = receipt;
|
||||
}
|
||||
|
||||
public void setReceiptBase64(string receiptBase64)
|
||||
{
|
||||
this.receiptBase64 = receiptBase64;
|
||||
}
|
||||
|
||||
// Android specific methods
|
||||
public void setPurchaseToken(string purchaseToken)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ namespace com.adjust.sdk
|
|||
public static string KeyTestOptionsGdprUrl = "gdprUrl";
|
||||
public static string KeyTestOptionsSubscriptionUrl = "subscriptionUrl";
|
||||
public static string KeyTestOptionsPurchaseVerificationUrl = "purchaseVerificationUrl";
|
||||
public static string KeyTestOptionsOverwriteUrl = "urlOverwrite";
|
||||
public static string KeyTestOptionsExtraPath = "extraPath";
|
||||
public static string KeyTestOptionsBasePath = "basePath";
|
||||
public static string KeyTestOptionsGdprPath = "gdprPath";
|
||||
|
|
@ -48,6 +49,8 @@ namespace com.adjust.sdk
|
|||
public static string KeyTestOptionsTeardown = "teardown";
|
||||
public static string KeyTestOptionsNoBackoffWait = "noBackoffWait";
|
||||
public static string KeyTestOptionsAdServicesFrameworkEnabled = "adServicesFrameworkEnabled";
|
||||
public static string KeyTestOptionsAttStatus = "attStatus";
|
||||
public static string KeyTestOptionsIdfa = "idfa";
|
||||
|
||||
public static int ConvertLogLevel(AdjustLogLevel? logLevel)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace com.adjust.sdk
|
|||
{
|
||||
public class AdjustWindows
|
||||
{
|
||||
private const string sdkPrefix = "unity4.36.0";
|
||||
private const string sdkPrefix = "unity4.38.0";
|
||||
private static bool appLaunched = false;
|
||||
|
||||
public static void Start(AdjustConfig adjustConfig)
|
||||
|
|
|
|||
|
|
@ -291,4 +291,9 @@
|
|||
*/
|
||||
@property (nonatomic, assign) BOOL coppaCompliantEnabled;
|
||||
|
||||
/**
|
||||
* @brief Enables caching of device ids to read it only once
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL readDeviceInfoOnceEnabled;
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// Adjust.h
|
||||
// Adjust SDK
|
||||
//
|
||||
// V4.36.0
|
||||
// V4.38.0
|
||||
// Created by Christian Wellenbrock (@wellle) on 23rd July 2013.
|
||||
// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved.
|
||||
//
|
||||
|
|
@ -17,17 +17,18 @@
|
|||
#import "ADJPurchase.h"
|
||||
#import "ADJPurchaseVerificationResult.h"
|
||||
|
||||
typedef void(^AdjustResolvedDeeplinkBlock)(NSString * _Nonnull resolvedLink);
|
||||
|
||||
@interface AdjustTestOptions : NSObject
|
||||
|
||||
@property (nonatomic, copy, nullable) NSString *baseUrl;
|
||||
@property (nonatomic, copy, nullable) NSString *gdprUrl;
|
||||
@property (nonatomic, copy, nullable) NSString *subscriptionUrl;
|
||||
@property (nonatomic, copy, nullable) NSString *purchaseVerificationUrl;
|
||||
@property (nonatomic, copy, nullable) NSString *urlOverwrite;
|
||||
@property (nonatomic, copy, nullable) NSString *extraPath;
|
||||
@property (nonatomic, copy, nullable) NSNumber *timerIntervalInMilliseconds;
|
||||
@property (nonatomic, copy, nullable) NSNumber *timerStartInMilliseconds;
|
||||
@property (nonatomic, copy, nullable) NSNumber *sessionIntervalInMilliseconds;
|
||||
@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 deleteState;
|
||||
@property (nonatomic, assign) BOOL noBackoffWait;
|
||||
|
|
@ -56,6 +57,7 @@ extern NSString * __nonnull const ADJAdRevenueSourceHeliumChartboost;
|
|||
extern NSString * __nonnull const ADJAdRevenueSourcePublisher;
|
||||
extern NSString * __nonnull const ADJAdRevenueSourceTopOn;
|
||||
extern NSString * __nonnull const ADJAdRevenueSourceADX;
|
||||
extern NSString * __nonnull const ADJAdRevenueSourceTradplus;
|
||||
|
||||
/**
|
||||
* Constants for country app's URL strategies.
|
||||
|
|
@ -137,6 +139,15 @@ extern NSString * __nonnull const ADJDataResidencyUS;
|
|||
*/
|
||||
+ (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.
|
||||
*
|
||||
|
|
@ -407,6 +418,9 @@ extern NSString * __nonnull const ADJDataResidencyUS;
|
|||
|
||||
- (void)appWillOpenUrl:(nonnull NSURL *)url;
|
||||
|
||||
- (void)processDeeplink:(nonnull NSURL *)deeplink
|
||||
completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler;
|
||||
|
||||
- (void)setOfflineMode:(BOOL)enabled;
|
||||
|
||||
- (void)setDeviceToken:(nonnull NSData *)deviceToken;
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -101,6 +101,7 @@ extern "C"
|
|||
int linkMeEnabled,
|
||||
int needsCost,
|
||||
int coppaCompliant,
|
||||
int readDeviceInfoOnce,
|
||||
int64_t secretId,
|
||||
int64_t info1,
|
||||
int64_t info2,
|
||||
|
|
@ -222,6 +223,11 @@ extern "C"
|
|||
[adjustConfig setCoppaCompliantEnabled:(BOOL)coppaCompliant];
|
||||
}
|
||||
|
||||
// Read device info just once.
|
||||
if (readDeviceInfoOnce != -1) {
|
||||
[adjustConfig setReadDeviceInfoOnceEnabled:(BOOL)readDeviceInfoOnce];
|
||||
}
|
||||
|
||||
// User agent.
|
||||
if (stringUserAgent != nil) {
|
||||
[adjustConfig setUserAgent:stringUserAgent];
|
||||
|
|
@ -270,6 +276,7 @@ extern "C"
|
|||
double revenue,
|
||||
const char* currency,
|
||||
const char* receipt,
|
||||
const char* receiptBase64,
|
||||
const char* productId,
|
||||
const char* transactionId,
|
||||
const char* callbackId,
|
||||
|
|
@ -324,6 +331,14 @@ extern "C"
|
|||
[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.
|
||||
if (callbackId != NULL) {
|
||||
NSString *stringCallbackId = [NSString stringWithUTF8String:callbackId];
|
||||
|
|
@ -848,7 +863,8 @@ extern "C"
|
|||
|
||||
// Receipt.
|
||||
if (receipt != NULL) {
|
||||
dataReceipt = [[NSString stringWithUTF8String:receipt] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSString *stringReceiptBase64 = [NSString stringWithUTF8String:receipt];
|
||||
dataReceipt = [[NSData alloc] initWithBase64EncodedString:stringReceiptBase64 options:0];
|
||||
}
|
||||
|
||||
// Scene name.
|
||||
|
|
@ -881,10 +897,34 @@ extern "C"
|
|||
}];
|
||||
}
|
||||
|
||||
void _AdjustSetTestOptions(const char* baseUrl,
|
||||
const char* gdprUrl,
|
||||
const char* subscriptionUrl,
|
||||
const char* purchaseVerificationUrl,
|
||||
void _AdjustProcessDeeplink(const char* url, const char* sceneName) {
|
||||
NSString *strSceneName = isStringValid(sceneName) == true ? [NSString stringWithUTF8String:sceneName] : nil;
|
||||
if (url != NULL) {
|
||||
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,
|
||||
long timerIntervalInMilliseconds,
|
||||
long timerStartInMilliseconds,
|
||||
|
|
@ -893,38 +933,29 @@ extern "C"
|
|||
int teardown,
|
||||
int deleteState,
|
||||
int noBackoffWait,
|
||||
int adServicesFrameworkEnabled) {
|
||||
int adServicesFrameworkEnabled,
|
||||
int attStatus,
|
||||
const char *idfa) {
|
||||
AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init];
|
||||
|
||||
NSString *stringBaseUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:baseUrl] : nil;
|
||||
if (stringBaseUrl != nil) {
|
||||
[testOptions setBaseUrl:stringBaseUrl];
|
||||
NSString *stringOverwriteUrl = isStringValid(overwriteUrl) == true ? [NSString stringWithUTF8String:overwriteUrl] : nil;
|
||||
if (stringOverwriteUrl != nil) {
|
||||
[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;
|
||||
if (stringExtraPath != nil && [stringExtraPath length] > 0) {
|
||||
[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.timerStartInMilliseconds = [NSNumber numberWithLong:timerStartInMilliseconds];
|
||||
testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithLong:sessionIntervalInMilliseconds];
|
||||
testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithLong:subsessionIntervalInMilliseconds];
|
||||
testOptions.attStatusInt = [NSNumber numberWithInt:attStatus];
|
||||
|
||||
if (teardown != -1) {
|
||||
[AdjustUnityDelegate teardown];
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ namespace com.adjust.sdk
|
|||
#if UNITY_IOS
|
||||
public class AdjustiOS
|
||||
{
|
||||
private const string sdkPrefix = "unity4.36.0";
|
||||
private const string sdkPrefix = "unity4.38.0";
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _AdjustLaunchApp(
|
||||
|
|
@ -31,6 +31,7 @@ namespace com.adjust.sdk
|
|||
int linkMeEnabled,
|
||||
int needsCost,
|
||||
int coppaCompliant,
|
||||
int readDeviceInfoOnce,
|
||||
long secretId,
|
||||
long info1,
|
||||
long info2,
|
||||
|
|
@ -54,6 +55,7 @@ namespace com.adjust.sdk
|
|||
double revenue,
|
||||
string currency,
|
||||
string receipt,
|
||||
string receiptBase64,
|
||||
string productId,
|
||||
string transactionId,
|
||||
string callbackId,
|
||||
|
|
@ -153,10 +155,7 @@ namespace com.adjust.sdk
|
|||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _AdjustSetTestOptions(
|
||||
string baseUrl,
|
||||
string gdprUrl,
|
||||
string subscriptionUrl,
|
||||
string purchaseVerificationUrl,
|
||||
string overwriteUrl,
|
||||
string extraPath,
|
||||
long timerIntervalInMilliseconds,
|
||||
long timerStartInMilliseconds,
|
||||
|
|
@ -165,7 +164,9 @@ namespace com.adjust.sdk
|
|||
int teardown,
|
||||
int deleteState,
|
||||
int noBackoffWait,
|
||||
int adServicesFrameworkEnabled);
|
||||
int adServicesFrameworkEnabled,
|
||||
int attStatus,
|
||||
string idfa);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _AdjustRequestTrackingAuthorizationWithCompletionHandler(string sceneName);
|
||||
|
|
@ -201,6 +202,9 @@ namespace com.adjust.sdk
|
|||
string receipt,
|
||||
string sceneName);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _AdjustProcessDeeplink(string url, string sceneName);
|
||||
|
||||
public AdjustiOS() {}
|
||||
|
||||
public static void Start(AdjustConfig adjustConfig)
|
||||
|
|
@ -231,6 +235,7 @@ namespace com.adjust.sdk
|
|||
int linkMeEnabled = AdjustUtils.ConvertBool(adjustConfig.linkMeEnabled);
|
||||
int needsCost = AdjustUtils.ConvertBool(adjustConfig.needsCost);
|
||||
int coppaCompliant = AdjustUtils.ConvertBool(adjustConfig.coppaCompliantEnabled);
|
||||
int readDeviceInfoOnce = AdjustUtils.ConvertBool(adjustConfig.readDeviceInfoOnceEnabled);
|
||||
int isAttributionCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getAttributionChangedDelegate() != null);
|
||||
int isEventSuccessCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventSuccessDelegate() != null);
|
||||
int isEventFailureCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventFailureDelegate() != null);
|
||||
|
|
@ -260,6 +265,7 @@ namespace com.adjust.sdk
|
|||
linkMeEnabled,
|
||||
needsCost,
|
||||
coppaCompliant,
|
||||
readDeviceInfoOnce,
|
||||
secretId,
|
||||
info1,
|
||||
info2,
|
||||
|
|
@ -285,13 +291,25 @@ namespace com.adjust.sdk
|
|||
string eventToken = adjustEvent.eventToken;
|
||||
string currency = adjustEvent.currency;
|
||||
string receipt = adjustEvent.receipt;
|
||||
string receiptBase64 = adjustEvent.receiptBase64;
|
||||
string productId = adjustEvent.productId;
|
||||
string transactionId = adjustEvent.transactionId;
|
||||
string callbackId = adjustEvent.callbackId;
|
||||
string stringJsonCallbackParameters = AdjustUtils.ConvertListToJson(adjustEvent.callbackList);
|
||||
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)
|
||||
|
|
@ -526,14 +544,17 @@ namespace com.adjust.sdk
|
|||
cSceneName);
|
||||
}
|
||||
|
||||
public static void ProcessDeeplink(string url, string sceneName)
|
||||
{
|
||||
_AdjustProcessDeeplink(url, sceneName);
|
||||
}
|
||||
|
||||
// Used for testing only.
|
||||
public static void SetTestOptions(Dictionary<string, string> testOptions)
|
||||
{
|
||||
string baseUrl = testOptions[AdjustUtils.KeyTestOptionsBaseUrl];
|
||||
string gdprUrl = testOptions[AdjustUtils.KeyTestOptionsGdprUrl];
|
||||
string subscriptionUrl = testOptions[AdjustUtils.KeyTestOptionsSubscriptionUrl];
|
||||
string purchaseVerificationUrl = testOptions[AdjustUtils.KeyTestOptionsPurchaseVerificationUrl];
|
||||
string overwriteUrl = testOptions[AdjustUtils.KeyTestOptionsOverwriteUrl];
|
||||
string extraPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsExtraPath) ? testOptions[AdjustUtils.KeyTestOptionsExtraPath] : null;
|
||||
string idfa = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsIdfa) ? testOptions[AdjustUtils.KeyTestOptionsIdfa] : null;
|
||||
long timerIntervalMilis = -1;
|
||||
long timerStartMilis = -1;
|
||||
long sessionIntMilis = -1;
|
||||
|
|
@ -542,6 +563,7 @@ namespace com.adjust.sdk
|
|||
bool deleteState = false;
|
||||
bool noBackoffWait = false;
|
||||
bool adServicesFrameworkEnabled = false;
|
||||
int attStatus = -1;
|
||||
|
||||
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds))
|
||||
{
|
||||
|
|
@ -575,12 +597,13 @@ namespace com.adjust.sdk
|
|||
{
|
||||
adServicesFrameworkEnabled = testOptions[AdjustUtils.KeyTestOptionsAdServicesFrameworkEnabled].ToLower() == "true";
|
||||
}
|
||||
if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsAttStatus))
|
||||
{
|
||||
attStatus = int.Parse(testOptions[AdjustUtils.KeyTestOptionsAttStatus]);
|
||||
}
|
||||
|
||||
_AdjustSetTestOptions(
|
||||
baseUrl,
|
||||
gdprUrl,
|
||||
subscriptionUrl,
|
||||
purchaseVerificationUrl,
|
||||
overwriteUrl,
|
||||
extraPath,
|
||||
timerIntervalMilis,
|
||||
timerStartMilis,
|
||||
|
|
@ -589,7 +612,9 @@ namespace com.adjust.sdk
|
|||
AdjustUtils.ConvertBool(teardown),
|
||||
AdjustUtils.ConvertBool(deleteState),
|
||||
AdjustUtils.ConvertBool(noBackoffWait),
|
||||
AdjustUtils.ConvertBool(adServicesFrameworkEnabled));
|
||||
AdjustUtils.ConvertBool(adServicesFrameworkEnabled),
|
||||
attStatus,
|
||||
idfa);
|
||||
}
|
||||
|
||||
public static void TrackSubsessionStart(string testingArgument = null)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Guru.Editor.Adjust
|
|||
{
|
||||
// ------------ VERSION INFO ------------
|
||||
public const string Version = "0.1.0";
|
||||
public const string SdkVersion = "4.36.0";
|
||||
public const string SdkVersion = "4.38.0";
|
||||
// ------------ VERSION INFO ------------
|
||||
|
||||
public const string PackageName = "com.guru.unity.adjust";
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1caf9524837164956bbd913fc07df697
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 50d6b4f70c684250a7c697555a855ad0
|
||||
timeCreated: 1713243654
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
{
|
||||
"name": "com.guru.unity.adjust",
|
||||
"displayName": "Guru Adjust",
|
||||
"version": "1.0.0",
|
||||
"description": "Guru 整合 Adjust 插件",
|
||||
"version": "1.1.1",
|
||||
"description": "Guru 整合 Adjust 插件 (4.38.0)",
|
||||
"unity": "2020.3",
|
||||
"author":{
|
||||
"name": "Guru Game"
|
||||
},
|
||||
"license": "MIT",
|
||||
"category": "Game tool",
|
||||
"dependencies": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue