Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
### Version 4.33.0 (15th January 2023)
#### Added
- Added support for SKAdNetwork 4.0.
- Added support for setting a new China URL Strategy. You can choose this setting by calling `setUrlStrategy` method of `AdjustConfig` instance with `AdjustConfig.UrlStrategyCn` parameter.
- Added support to OAID plugin for MSA SDK v2.0.0.

#### Native SDKs
- [[email protected]][ios_sdk_v4.33.3]
- [[email protected]][android_sdk_v4.33.2]

---

### Version 4.32.1 (14th November 2022)
#### Fixed
- Fixed conversion bug which caused `transaction_date` parameter of iOS subscription tracking to be wrongly formatted.
Expand Down Expand Up @@ -551,6 +563,7 @@
[ios_sdk_v4.29.6]: https://github.com/adjust/ios_sdk/tree/v4.29.6
[ios_sdk_v4.31.0]: https://github.com/adjust/ios_sdk/tree/v4.31.0
[ios_sdk_v4.32.1]: https://github.com/adjust/ios_sdk/tree/v4.32.1
[ios_sdk_v4.33.3]: https://github.com/adjust/ios_sdk/tree/v4.33.3

[android_sdk_v4.10.4]: https://github.com/adjust/android_sdk/tree/v4.10.4
[android_sdk_v4.11.0]: https://github.com/adjust/android_sdk/tree/v4.11.0
Expand Down Expand Up @@ -582,3 +595,4 @@
[android_sdk_v4.28.9]: https://github.com/adjust/android_sdk/tree/v4.28.9
[android_sdk_v4.31.0]: https://github.com/adjust/android_sdk/tree/v4.31.0
[android_sdk_v4.32.0]: https://github.com/adjust/android_sdk/tree/v4.32.0
[android_sdk_v4.33.2]: https://github.com/adjust/android_sdk/tree/v4.33.2
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.32.1
4.33.0
Binary file modified android/libs/adjust-android.jar
Binary file not shown.
2 changes: 2 additions & 0 deletions android/src/main/java/com/adjust/sdk/Adjust.java
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,8 @@ public void create(ReadableMap mapConfig) {
adjustConfig.setUrlStrategy(AdjustConfig.URL_STRATEGY_CHINA);
} else if (urlStrategy.equalsIgnoreCase("india")) {
adjustConfig.setUrlStrategy(AdjustConfig.URL_STRATEGY_INDIA);
} else if (urlStrategy.equalsIgnoreCase("cn")) {
adjustConfig.setUrlStrategy(AdjustConfig.URL_STRATEGY_CN);
} else if (urlStrategy.equalsIgnoreCase("data-residency-eu")) {
adjustConfig.setUrlStrategy(AdjustConfig.DATA_RESIDENCY_EU);
} else if (urlStrategy.equalsIgnoreCase("data-residency-us")) {
Expand Down
14 changes: 7 additions & 7 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PODS:
- Adjust (4.32.1):
- Adjust/Core (= 4.32.1)
- Adjust/Core (4.32.1)
- Adjust (4.33.3):
- Adjust/Core (= 4.33.3)
- Adjust/Core (4.33.3)
- boost (1.76.0)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
Expand Down Expand Up @@ -287,8 +287,8 @@ PODS:
- React-jsinspector (0.69.4)
- React-logger (0.69.4):
- glog
- react-native-adjust (4.32.1):
- Adjust (= 4.32.1)
- react-native-adjust (4.33.0):
- Adjust (= 4.33.3)
- React-Core
- React-perflogger (0.69.4)
- React-RCTActionSheet (0.69.4):
Expand Down Expand Up @@ -508,7 +508,7 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"

SPEC CHECKSUMS:
Adjust: 3030e2e086023cb6cadef374b500b6cc263bb9d0
Adjust: 41d0d5c031409aebe7fb1f5703ff0d3306133439
boost: a7c83b31436843459a1961bfd74b96033dc77234
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
Expand Down Expand Up @@ -541,7 +541,7 @@ SPEC CHECKSUMS:
React-jsiexecutor: a27badbbdbc0ff781813370736a2d1c7261181d4
React-jsinspector: 8a3d3f5dcd23a91e8c80b1bf0e96902cd1dca999
React-logger: 1088859f145b8f6dd0d3ed051a647ef0e3e80fad
react-native-adjust: 8b0e252bd8a20ec4144ee2dc8f86d862635ce5db
react-native-adjust: 5f5966b51459bf8cb074bf8ebc1307a2bfb7b1da
React-perflogger: cb386fd44c97ec7f8199c04c12b22066b0f2e1e0
React-RCTActionSheet: f803a85e46cf5b4066c2ac5e122447f918e9c6e5
React-RCTAnimation: 19c80fa950ccce7f4db76a2a7f2cf79baae07fc7
Expand Down
702 changes: 410 additions & 292 deletions example/yarn.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion ext/android/sdk
Submodule sdk updated 54 files
+3 −1 Adjust/build.gradle
+1 −0 Adjust/example-app-webbridge/src/main/java/com/example/examples/MainActivity.java
+19 −19 Adjust/sdk-core/build.gradle
+58 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
+7 −7 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java
+81 −29 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java
+12 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
+12 −12 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAttribution.java
+2 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
+7 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
+27 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Reflection.java
+2 −2 Adjust/sdk-core/src/main/java/com/adjust/sdk/SessionParameters.java
+48 −20 Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
+11 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/network/UrlStrategy.java
+1 −1 Adjust/sdk-plugin-criteo/build.gradle
+1 −1 Adjust/sdk-plugin-imei/build.gradle
+6 −2 Adjust/sdk-plugin-oaid/build.gradle
+ Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.1.0.aar
+ Adjust/sdk-plugin-oaid/libs/oaid_sdk_2.0.0.aar
+40 −0 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/HmsSdkClient.java
+5 −5 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/MsaSdkClient.java
+19 −0 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OaidInfo.java
+0 −116 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OpenDeviceIdentifierClient.java
+0 −128 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OpenDeviceIdentifierConnector.java
+0 −135 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OpenDeviceIdentifierService.java
+15 −16 Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/Util.java
+2 −0 Adjust/sdk-plugin-samsung-referrer/.gitignore
+175 −0 Adjust/sdk-plugin-samsung-referrer/build.gradle
+21 −0 Adjust/sdk-plugin-samsung-referrer/proguard-rules.pro
+3 −0 Adjust/sdk-plugin-samsung-referrer/src/main/AndroidManifest.xml
+16 −0 Adjust/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/AdjustSamsungReferrer.java
+57 −0 Adjust/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/SamsungReferrerClient.java
+24 −0 Adjust/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/Util.java
+3 −0 Adjust/sdk-plugin-samsung-referrer/src/main/res/values/strings.xml
+1 −1 Adjust/sdk-plugin-sociomantic/build.gradle
+1 −1 Adjust/sdk-plugin-trademob/build.gradle
+2 −0 Adjust/sdk-plugin-vivo-referrer/.gitignore
+173 −0 Adjust/sdk-plugin-vivo-referrer/build.gradle
+21 −0 Adjust/sdk-plugin-vivo-referrer/proguard-rules.pro
+3 −0 Adjust/sdk-plugin-vivo-referrer/src/main/AndroidManifest.xml
+16 −0 Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/AdjustVivoReferrer.java
+16 −0 Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/Util.java
+35 −0 Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java
+3 −0 Adjust/sdk-plugin-vivo-referrer/src/main/res/values/strings.xml
+74 −11 Adjust/sdk-plugin-webbridge/build.gradle
+1 −1 Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
+1 −0 Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js
+20 −5 Adjust/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridgeUtil.java
+1 −1 Adjust/sdk-plugin-xiaomi-referrer/build.gradle
+2 −2 Adjust/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/XiaomiReferrerClient.java
+1 −1 Adjust/settings.gradle
+1 −1 Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
+33 −0 CHANGELOG.md
+1 −1 VERSION
2 changes: 1 addition & 1 deletion ext/ios/sdk
Submodule sdk updated 258 files
13 changes: 13 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ declare module 'react-native-adjust' {
conversionValue: number
}

interface AdjustSkad4Data {
fineValue: number
coarseValue: string
lockWindow: boolean
}

export class AdjustConfig {
constructor(appToken: string, environment: Environment)
public setLogLevel(level: LogLevel): void
Expand Down Expand Up @@ -119,6 +125,10 @@ declare module 'react-native-adjust' {
callback: (conversionValue: AdjustConversionValue) => void
): void

public setSkad4ConversionValueUpdatedCallbackListener(
callback: (skad4Data: AdjustSkad4Data) => void
): void

static LogLevelVerbose: LogLevel
static LogLevelDebug: LogLevel
static LogLevelInfo: LogLevel
Expand All @@ -130,6 +140,7 @@ declare module 'react-native-adjust' {
static EnvironmentProduction: Environment
static UrlStrategyChina: UrlStrategy
static UrlStrategyIndia: UrlStrategy
static UrlStrategyCn: UrlStrategy
static DataResidencyEU: UrlStrategy
static DataResidencyTR: UrlStrategy
static DataResidencyUS: UrlStrategy
Expand Down Expand Up @@ -213,6 +224,8 @@ declare module 'react-native-adjust' {
convertUniversalLink: (url: string, scheme: string, callback: (convertedUrl: string) => void) => void
requestTrackingAuthorizationWithCompletionHandler: (handler: (status: number) => void) => void
updateConversionValue: (conversionValue: number) => void
updateConversionValueWithErrorCallback: (conversionValue: number, callback: (error: string) => void) => void
updateConversionValueWithSkad4ErrorCallback: (conversionValue: number, coarseValue: string, lockWindow: boolean, callback: (error: string) => void) => void
getAppTrackingAuthorizationStatus: (callback: (authorizationStatus: number) => void) => void
trackThirdPartySharing: (adjustThirdPartySharing: AdjustThirdPartySharing) => void
trackMeasurementConsent: (measurementConsent: boolean) => void
Expand Down
25 changes: 23 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Adjust.getAmazonAdId = function(callback) {
};

Adjust.getSdkVersion = function(callback) {
module_adjust.getSdkVersion("react-native4.32.1", callback);
module_adjust.getSdkVersion("react-native4.33.0", callback);
};

Adjust.setReferrer = function(referrer) {
Expand All @@ -156,6 +156,14 @@ Adjust.updateConversionValue = function(conversionValue) {
module_adjust.updateConversionValue(conversionValue);
};

Adjust.updateConversionValueWithErrorCallback = function(conversionValue, callback) {
module_adjust.updateConversionValueWithErrorCallback(conversionValue, callback);
};

Adjust.updateConversionValueWithSkad4ErrorCallback = function(conversionValue, coarseValue, lockWindow, callback) {
module_adjust.updateConversionValueWithSkad4ErrorCallback(conversionValue, coarseValue, lockWindow, callback);
};

Adjust.getAppTrackingAuthorizationStatus = function(callback) {
module_adjust.getAppTrackingAuthorizationStatus(callback);
};
Expand Down Expand Up @@ -242,7 +250,7 @@ Adjust.onPause = function(testParam) {
// AdjustConfig

var AdjustConfig = function(appToken, environment) {
this.sdkPrefix = "react-native4.32.1";
this.sdkPrefix = "react-native4.33.0";
this.appToken = appToken;
this.environment = environment;
this.logLevel = null;
Expand Down Expand Up @@ -294,9 +302,11 @@ AdjustConfig.SessionTrackingSucceededSubscription = null;
AdjustConfig.SessionTrackingFailedSubscription = null;
AdjustConfig.DeferredDeeplinkSubscription = null;
AdjustConfig.ConversionValueUpdatedSubscription = null;
AdjustConfig.Skad4ConversionValueUpdatedSubscription = null;

AdjustConfig.UrlStrategyChina = "china";
AdjustConfig.UrlStrategyIndia = "india";
AdjustConfig.UrlStrategyCn = "cn";

AdjustConfig.DataResidencyEU = "data-residency-eu";
AdjustConfig.DataResidencyTR = "data-residency-tr";
Expand Down Expand Up @@ -484,6 +494,17 @@ AdjustConfig.prototype.setConversionValueUpdatedCallbackListener = function(conv
}
};

AdjustConfig.prototype.setSkad4ConversionValueUpdatedCallbackListener = function(skad4ConversionValueUpdatedCallbackListener) {
if (Platform.OS === "ios") {
if (null == AdjustConfig.Skad4ConversionValueUpdatedSubscription) {
module_adjust.setSkad4ConversionValueUpdatedCallbackListener();
AdjustConfig.Skad4ConversionValueUpdatedSubscription = module_adjust_emitter.addListener(
'adjust_skad4ConversionValueUpdated', skad4ConversionValueUpdatedCallbackListener
);
}
}
};

// AdjustEvent

var AdjustEvent = function(eventToken) {
Expand Down
74 changes: 35 additions & 39 deletions ios/Adjust/ADJActivityHandler.m
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#import "ADJSdkClickHandler.h"
#import "ADJUserDefaults.h"
#import "ADJUrlStrategy.h"
#import "ADJSKAdNetwork.h"

NSString * const ADJiAdPackageKey = @"iad3";
NSString * const ADJAdServicesPackageKey = @"apple_ads";
Expand Down Expand Up @@ -173,10 +174,12 @@ - (id)initWithConfig:(ADJConfig *)adjustConfig
[self readActivityState];

// register SKAdNetwork attribution if we haven't already
if ([ADJUserDefaults getSkadRegisterCallTimestamp] == nil) {
[self registerForSKAdNetworkAttribution];
} else {
[ADJAdjustFactory.logger debug:@"Call to SKAdNetwork's registerAppForAdNetworkAttribution method already made for this install"];
if (self.adjustConfig.isSKAdNetworkHandlingActive) {
[[ADJSKAdNetwork getInstance] adjRegisterWithCompletionHandler:^(NSError * _Nonnull error) {
if (error) {
// handle error
}
}];
}

self.internalState = [[ADJInternalState alloc] init];
Expand Down Expand Up @@ -2835,32 +2838,6 @@ - (BOOL)checkAdRevenueI:(ADJActivityHandler *)selfI
return YES;
}

- (void)registerForSKAdNetworkAttribution {
if (!self.adjustConfig.isSKAdNetworkHandlingActive) {
return;
}
id<ADJLogger> logger = [ADJAdjustFactory logger];

Class skAdNetwork = NSClassFromString(@"SKAdNetwork");
if (skAdNetwork == nil) {
[logger warn:@"StoreKit framework not found in the app (SKAdNetwork not found)"];
return;
}

SEL registerAttributionSelector = NSSelectorFromString(@"registerAppForAdNetworkAttribution");
if ([skAdNetwork respondsToSelector:registerAttributionSelector]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[skAdNetwork performSelector:registerAttributionSelector];
#pragma clang diagnostic pop
[logger verbose:@"Call to SKAdNetwork's registerAppForAdNetworkAttribution method made"];

// store timestamp of when register call was successfully made
NSDate *callTime = [NSDate date];
[ADJUserDefaults saveSkadRegisterCallTimestamp:callTime];
}
}

- (void)checkConversionValue:(ADJResponseData *)responseData {
if (!self.adjustConfig.isSKAdNetworkHandlingActive) {
return;
Expand All @@ -2870,19 +2847,38 @@ - (void)checkConversionValue:(ADJResponseData *)responseData {
}

NSNumber *conversionValue = [responseData.jsonResponse objectForKey:@"skadn_conv_value"];

if (!conversionValue) {
return;
}

[ADJUtil updateSkAdNetworkConversionValue:conversionValue];

if ([self.adjustDelegate respondsToSelector:@selector(adjustConversionValueUpdated:)]) {
[self.logger debug:@"Launching conversion value updated delegate"];
[ADJUtil launchInMainThread:self.adjustDelegate
selector:@selector(adjustConversionValueUpdated:)
withObject:conversionValue];
}
NSString *coarseValue = [responseData.jsonResponse objectForKey:@"skadn_coarse_value"];
NSNumber *lockWindow = [responseData.jsonResponse objectForKey:@"skadn_lock_window"];

[[ADJSKAdNetwork getInstance] adjUpdateConversionValue:[conversionValue intValue]
coarseValue:coarseValue
lockWindow:lockWindow
completionHandler:^(NSError *error) {
if (error) {
// handle error
} else {
// ping old callback if implemented
if ([self.adjustDelegate respondsToSelector:@selector(adjustConversionValueUpdated:)]) {
[self.logger debug:@"Launching adjustConversionValueUpdated: delegate"];
[ADJUtil launchInMainThread:self.adjustDelegate
selector:@selector(adjustConversionValueUpdated:)
withObject:conversionValue];
}
// ping new callback if implemented
if ([self.adjustDelegate respondsToSelector:@selector(adjustConversionValueUpdated:coarseValue:lockWindow:)]) {
[self.logger debug:@"Launching adjustConversionValueUpdated:coarseValue:lockWindow: delegate"];
[ADJUtil launchInMainThread:^{
[self.adjustDelegate adjustConversionValueUpdated:conversionValue
coarseValue:coarseValue
lockWindow:lockWindow];
}];
}
}
}];
}

- (void)updateAttStatusFromUserCallback:(int)newAttStatusFromUser {
Expand Down
15 changes: 14 additions & 1 deletion ios/Adjust/ADJConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,25 @@
- (BOOL)adjustDeeplinkResponse:(nullable NSURL *)deeplink;

/**
* @brief Optional delegate method that gets called when Adjust SDK sets conversion value for the user.
* @brief Optional SKAdNetwork pre 4.0 style delegate method that gets called when Adjust SDK sets conversion value for the user.
*
* @param conversionValue Conversion value used by Adjust SDK to invoke updateConversionValue: API.
*/
- (void)adjustConversionValueUpdated:(nullable NSNumber *)conversionValue;

/**
* @brief Optional SKAdNetwork 4.0 style delegate method that gets called when Adjust SDK sets conversion value for the user.
* You can use this callback even with using pre 4.0 SKAdNetwork.
* In that case you can expect coarseValue and lockWindow values to be nil.
*
* @param fineValue Conversion value set by Adjust SDK.
* @param coarseValue Coarse value set by Adjust SDK.
* @param lockWindow Lock window set by Adjust SDK.
*/
- (void)adjustConversionValueUpdated:(nullable NSNumber *)fineValue
coarseValue:(nullable NSString *)coarseValue
lockWindow:(nullable NSNumber *)lockWindow;

@end

/**
Expand Down
42 changes: 42 additions & 0 deletions ios/Adjust/ADJSKAdNetwork.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//
// ADJSKAdNetwork.h
// Adjust
//
// Created by Uglješa Erceg (@uerceg) on 27th October 2022.
// Copyright © 2022-Present Adjust GmbH. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ADJSKAdNetwork : NSObject

+ (nullable instancetype)getInstance;

- (void)registerAppForAdNetworkAttribution;

- (void)updateConversionValue:(NSInteger)conversionValue;

- (void)updatePostbackConversionValue:(NSInteger)conversionValue
completionHandler:(void (^)(NSError *error))completion;

- (void)updatePostbackConversionValue:(NSInteger)fineValue
coarseValue:(NSString *)coarseValue
completionHandler:(void (^)(NSError *error))completion;

- (void)updatePostbackConversionValue:(NSInteger)fineValue
coarseValue:(NSString *)coarseValue
lockWindow:(BOOL)lockWindow
completionHandler:(void (^)(NSError *error))completion;

- (void)adjRegisterWithCompletionHandler:(void (^)(NSError *error))callback;

- (void)adjUpdateConversionValue:(NSInteger)conversionValue
coarseValue:(NSString *)coarseValue
lockWindow:(NSNumber *)lockWindow
completionHandler:(void (^)(NSError *error))callback;

@end

NS_ASSUME_NONNULL_END
Loading