Skip to content

Commit 24596d3

Browse files
committed
feat: add getters with timeout and ability to disable app set id
1 parent 4061b72 commit 24596d3

File tree

10 files changed

+362
-17
lines changed

10 files changed

+362
-17
lines changed

android/src/main/java/com/adjust/sdk/Adjust.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,14 @@ && checkKey(mapConfig, "isDataResidency")) {
283283
}
284284
}
285285

286+
// app set ID reading (Android only)
287+
if (checkKey(mapConfig, "isAppSetIdReadingEnabled")) {
288+
boolean isAppSetIdReadingEnabled = mapConfig.getBoolean("isAppSetIdReadingEnabled");
289+
if (!isAppSetIdReadingEnabled) {
290+
adjustConfig.disableAppSetIdReading();
291+
}
292+
}
293+
286294
// store info
287295
if (checkKey(mapConfig, "storeInfo")) {
288296
ReadableMap storeInfo = mapConfig.getMap("storeInfo");
@@ -772,6 +780,42 @@ public void onAttributionRead(AdjustAttribution attribution) {
772780
});
773781
}
774782

783+
@ReactMethod
784+
public void getAttributionWithTimeout(final ReadableMap timeoutMap, final Callback callback) {
785+
if (timeoutMap == null || !checkKey(timeoutMap, "timeoutInMilliseconds")) {
786+
if (callback != null) {
787+
callback.invoke((WritableMap) null);
788+
}
789+
return;
790+
}
791+
792+
long timeoutInMilliseconds;
793+
try {
794+
timeoutInMilliseconds = (long) timeoutMap.getDouble("timeoutInMilliseconds");
795+
} catch (Exception e) {
796+
if (callback != null) {
797+
callback.invoke((WritableMap) null);
798+
}
799+
return;
800+
}
801+
802+
com.adjust.sdk.Adjust.getAttributionWithTimeout(
803+
getReactApplicationContext(),
804+
timeoutInMilliseconds,
805+
new com.adjust.sdk.OnAttributionReadListener() {
806+
@Override
807+
public void onAttributionRead(AdjustAttribution attribution) {
808+
if (callback != null) {
809+
if (attribution == null) {
810+
callback.invoke((WritableMap) null);
811+
} else {
812+
callback.invoke(AdjustUtil.attributionToMap(attribution));
813+
}
814+
}
815+
}
816+
});
817+
}
818+
775819
@ReactMethod
776820
public void getAdid(final Callback callback) {
777821
com.adjust.sdk.Adjust.getAdid(new com.adjust.sdk.OnAdidReadListener() {
@@ -784,6 +828,38 @@ public void onAdidRead(String adid) {
784828
});
785829
}
786830

831+
@ReactMethod
832+
public void getAdidWithTimeout(final ReadableMap timeoutMap, final Callback callback) {
833+
if (timeoutMap == null || !checkKey(timeoutMap, "timeoutInMilliseconds")) {
834+
if (callback != null) {
835+
callback.invoke((String) null);
836+
}
837+
return;
838+
}
839+
840+
long timeoutInMilliseconds;
841+
try {
842+
timeoutInMilliseconds = (long) timeoutMap.getDouble("timeoutInMilliseconds");
843+
} catch (Exception e) {
844+
if (callback != null) {
845+
callback.invoke((String) null);
846+
}
847+
return;
848+
}
849+
850+
com.adjust.sdk.Adjust.getAdidWithTimeout(
851+
getReactApplicationContext(),
852+
timeoutInMilliseconds,
853+
new com.adjust.sdk.OnAdidReadListener() {
854+
@Override
855+
public void onAdidRead(String adid) {
856+
if (callback != null) {
857+
callback.invoke(adid != null ? adid : null);
858+
}
859+
}
860+
});
861+
}
862+
787863
@ReactMethod
788864
public void getLastDeeplink(final Callback callback) {
789865
com.adjust.sdk.Adjust.getLastDeeplink(

example/android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ android {
110110
dependencies {
111111
// The version of react-native is set by the React Native Gradle Plugin
112112
implementation("com.facebook.react:react-android")
113-
implementation("com.adjust.sdk:adjust-android-google-lvl:5.4.4")
113+
implementation("com.adjust.sdk:adjust-android-google-lvl:5.5.0")
114114

115115
if (hermesEnabled.toBoolean()) {
116116
implementation("com.facebook.react:hermes-android")

index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ declare module 'react-native-adjust' {
9191
public disableIdfvReading(): void
9292
public disableSkanAttribution(): void
9393
public disableAppTrackingTransparencyUsage(): void
94+
public disableAppSetIdReading(): void
9495
public setEventDeduplicationIdsMaxSize(eventDeduplicationIdsMaxSize: number): void
9596
public setAttConsentWaitingInterval(attConsentWaitingInterval: number): void
9697
public setUrlStrategy(urlStrategyDomains: string[], useSubdomains: boolean, isDataResidency: boolean): void
@@ -228,7 +229,9 @@ declare module 'react-native-adjust' {
228229
getIdfv: (callback: (idfv: string | null) => void) => void
229230
getGoogleAdId: (callback: (adid: string | null) => void) => void
230231
getAdid: (callback: (adid: string | null) => void) => void
232+
getAdidWithTimeout: (timeoutInMilliseconds: number, callback: (adid: string | null) => void) => void
231233
getAttribution: (callback: (attribution: AdjustAttribution) => void) => void
234+
getAttributionWithTimeout: (timeoutInMilliseconds: number, callback: (attribution: AdjustAttribution | null) => void) => void
232235
getAmazonAdId: (callback: (adid: string | null) => void) => void
233236
getSdkVersion: (callback: (sdkVersion: string | null) => void) => void
234237
requestAppTrackingAuthorization: (handler: (status: number) => void) => void

index.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,18 @@ Adjust.getAttribution = function(callback) {
149149
module_adjust.getAttribution(callback);
150150
};
151151

152+
Adjust.getAttributionWithTimeout = function(timeoutInMilliseconds, callback) {
153+
module_adjust.getAttributionWithTimeout({timeoutInMilliseconds: timeoutInMilliseconds}, callback);
154+
};
155+
152156
Adjust.getAdid = function(callback) {
153157
module_adjust.getAdid(callback);
154158
};
155159

160+
Adjust.getAdidWithTimeout = function(timeoutInMilliseconds, callback) {
161+
module_adjust.getAdidWithTimeout({timeoutInMilliseconds: timeoutInMilliseconds}, callback);
162+
};
163+
156164
Adjust.getLastDeeplink = function(callback) {
157165
module_adjust.getLastDeeplink(callback);
158166
};
@@ -333,7 +341,7 @@ Adjust.teardown = function(testParam) {
333341

334342
var AdjustConfig = function(appToken, environment) {
335343
// common
336-
this.sdkPrefix = "react-native5.4.4";
344+
this.sdkPrefix = "react-native5.5.0";
337345
this.appToken = appToken;
338346
this.environment = environment;
339347
this.logLevel = null;
@@ -551,6 +559,11 @@ AdjustConfig.prototype.disableAppTrackingTransparencyUsage = function() {
551559
this.isAppTrackingTransparencyUsageEnabled = false;
552560
};
553561

562+
// android only
563+
AdjustConfig.prototype.disableAppSetIdReading = function() {
564+
this.isAppSetIdReadingEnabled = false;
565+
};
566+
554567
AdjustConfig.prototype.setAttConsentWaitingInterval = function(attConsentWaitingInterval) {
555568
if (!Number.isInteger(attConsentWaitingInterval)) {
556569
console.log("[Adjust] ATT consent waiting interval is not of type integer");

ios/AdjustSdk.m

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,48 @@ @implementation AdjustSdk
572572
}];
573573
}
574574

575+
RCT_EXPORT_METHOD(getAttributionWithTimeout:(NSDictionary *)timeoutMap callback:(RCTResponseSenderBlock)callback) {
576+
NSNumber *timeoutInMilliseconds = timeoutMap[@"timeoutInMilliseconds"];
577+
if (![self isFieldValid:timeoutInMilliseconds]) {
578+
if (callback) {
579+
callback(@[[NSNull null]]);
580+
}
581+
return;
582+
}
583+
584+
NSInteger timeoutMs = [timeoutInMilliseconds integerValue];
585+
[Adjust attributionWithTimeout:timeoutMs completionHandler:^(ADJAttribution * _Nullable attribution) {
586+
if (callback) {
587+
if (attribution == nil) {
588+
callback(@[[NSNull null]]);
589+
return;
590+
}
591+
592+
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
593+
[self addValueOrEmpty:dictionary key:@"trackerToken" value:attribution.trackerToken];
594+
[self addValueOrEmpty:dictionary key:@"trackerName" value:attribution.trackerName];
595+
[self addValueOrEmpty:dictionary key:@"network" value:attribution.network];
596+
[self addValueOrEmpty:dictionary key:@"campaign" value:attribution.campaign];
597+
[self addValueOrEmpty:dictionary key:@"creative" value:attribution.creative];
598+
[self addValueOrEmpty:dictionary key:@"adgroup" value:attribution.adgroup];
599+
[self addValueOrEmpty:dictionary key:@"clickLabel" value:attribution.clickLabel];
600+
[self addValueOrEmpty:dictionary key:@"costType" value:attribution.costType];
601+
[self addValueOrEmpty:dictionary key:@"costAmount" value:attribution.costAmount];
602+
[self addValueOrEmpty:dictionary key:@"costCurrency" value:attribution.costCurrency];
603+
if (attribution.jsonResponse != nil) {
604+
NSData *dataJsonResponse = [NSJSONSerialization dataWithJSONObject:attribution.jsonResponse
605+
options:0
606+
error:nil];
607+
NSString *stringJsonResponse = [[NSString alloc] initWithBytes:[dataJsonResponse bytes]
608+
length:[dataJsonResponse length]
609+
encoding:NSUTF8StringEncoding];
610+
[self addValueOrEmpty:dictionary key:@"jsonResponse" value:stringJsonResponse];
611+
}
612+
callback(@[dictionary]);
613+
}
614+
}];
615+
}
616+
575617
RCT_EXPORT_METHOD(getAdid:(RCTResponseSenderBlock)callback) {
576618
[Adjust adidWithCompletionHandler:^(NSString * _Nullable adid) {
577619
if (callback) {
@@ -584,6 +626,27 @@ @implementation AdjustSdk
584626
}];
585627
}
586628

629+
RCT_EXPORT_METHOD(getAdidWithTimeout:(NSDictionary *)timeoutMap callback:(RCTResponseSenderBlock)callback) {
630+
NSNumber *timeoutInMilliseconds = timeoutMap[@"timeoutInMilliseconds"];
631+
if (![self isFieldValid:timeoutInMilliseconds]) {
632+
if (callback) {
633+
callback(@[[NSNull null]]);
634+
}
635+
return;
636+
}
637+
638+
NSInteger timeoutMs = [timeoutInMilliseconds integerValue];
639+
[Adjust adidWithTimeout:timeoutMs completionHandler:^(NSString * _Nullable adid) {
640+
if (callback) {
641+
if (nil == adid) {
642+
callback(@[[NSNull null]]);
643+
} else {
644+
callback(@[adid]);
645+
}
646+
}
647+
}];
648+
}
649+
587650
RCT_EXPORT_METHOD(getLastDeeplink:(RCTResponseSenderBlock)callback) {
588651
[Adjust lastDeeplinkWithCompletionHandler:^(NSURL * _Nullable lastDeeplink) {
589652
if (callback) {

plugins/oaid/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ android {
2828
dependencies {
2929
implementation fileTree(dir: 'libs', include: ['*.jar'])
3030
implementation 'com.facebook.react:react-native:+'
31-
implementation 'com.adjust.sdk:adjust-android-oaid:5.4.4'
31+
implementation 'com.adjust.sdk:adjust-android-oaid:5.5.0'
3232
}

test/app/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const App: () => React$Node = () => {
4848
}
4949

5050
var urlOverwrite = "";
51-
var ipAddress = "192.168.0.30";
51+
var ipAddress = "192.168.86.241";
5252
if (Platform.OS === "android") {
5353
urlOverwrite = "https://" + ipAddress + ":8443";
5454
} else if (Platform.OS === "ios") {

0 commit comments

Comments
 (0)