Skip to content

Commit 18d8932

Browse files
author
Uglješa Erceg
committed
Merge pull request #116 from adjust/attribution_handler
Attribution handler
2 parents 2203cc3 + e2eecb2 commit 18d8932

File tree

20 files changed

+340
-83
lines changed

20 files changed

+340
-83
lines changed

Adjust/adjust/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ android {
88
minSdkVersion 9
99
targetSdkVersion 21
1010
versionCode 1
11-
versionName "4.0.5"
11+
versionName "4.0.6"
1212
}
1313
}
1414

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

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
package com.adjust.sdk;
1111

12+
import android.app.ActivityManager;
1213
import android.content.Context;
1314
import android.content.Intent;
1415
import android.content.pm.PackageManager;
@@ -89,6 +90,25 @@ public static ActivityHandler getInstance(AdjustConfig adjustConfig) {
8990
return null;
9091
}
9192

93+
if (adjustConfig.processName != null) {
94+
int currentPid = android.os.Process.myPid();
95+
ActivityManager manager = (ActivityManager) adjustConfig.context.getSystemService(Context.ACTIVITY_SERVICE);
96+
97+
if (manager == null) {
98+
return null;
99+
}
100+
101+
for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {
102+
if (processInfo.pid == currentPid) {
103+
if (!processInfo.processName.equalsIgnoreCase(adjustConfig.processName)) {
104+
AdjustFactory.getLogger().info("Skipping initialization in background process (%s)", processInfo.processName);
105+
return null;
106+
}
107+
break;
108+
}
109+
}
110+
}
111+
92112
ActivityHandler activityHandler = new ActivityHandler(adjustConfig);
93113
return activityHandler;
94114
}
@@ -140,6 +160,7 @@ public void setEnabled(boolean enabled) {
140160
this.enabled = enabled;
141161
if (activityState != null) {
142162
activityState.enabled = enabled;
163+
writeActivityState();
143164
}
144165
if (enabled) {
145166
if (toPause()) {
@@ -441,10 +462,17 @@ private void processSession() {
441462
}
442463

443464
private void checkAttributionState() {
444-
// if there is no attribution saved, or there is one being asked
445-
if (attribution == null || activityState.askingAttribution) {
446-
getAttributionHandler().getAttribution();
465+
// if it's a new session
466+
if (activityState.subsessionCount <= 1) {
467+
return;
447468
}
469+
470+
// if there is already an attribution saved and there was no attribution being asked
471+
if (attribution != null && !activityState.askingAttribution) {
472+
return;
473+
}
474+
475+
getAttributionHandler().getAttribution();
448476
}
449477

450478
private void endInternal() {
@@ -457,8 +485,8 @@ private void endInternal() {
457485
}
458486

459487
private void trackEventInternal(AdjustEvent event) {
488+
if (!isEnabled()) return;
460489
if (!checkEvent(event)) return;
461-
if (!activityState.enabled) return;
462490

463491
long now = System.currentTimeMillis();
464492

@@ -749,7 +777,8 @@ private IAttributionHandler getAttributionHandler() {
749777
ActivityPackage attributionPackage = getAttributionPackage();
750778
attributionHandler = AdjustFactory.getAttributionHandler(this,
751779
attributionPackage,
752-
toPause());
780+
toPause(),
781+
adjustConfig.hasListener());
753782
}
754783
return attributionHandler;
755784
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class AdjustConfig {
99
Context context;
1010
String appToken;
1111
String environment;
12+
String processName;
1213
LogLevel logLevel;
1314
String sdkPrefix;
1415
Boolean eventBufferingEnabled;
@@ -47,6 +48,8 @@ public void setSdkPrefix(String sdkPrefix) {
4748
this.sdkPrefix = sdkPrefix;
4849
}
4950

51+
public void setProcessName(String processName) { this.processName = processName; }
52+
5053
public void setDefaultTracker(String defaultTracker) {
5154
this.defaultTracker = defaultTracker;
5255
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,12 @@ public static IActivityHandler getActivityHandler(AdjustConfig config) {
9090

9191
public static IAttributionHandler getAttributionHandler(IActivityHandler activityHandler,
9292
ActivityPackage attributionPackage,
93-
boolean startPaused) {
93+
boolean startPaused,
94+
boolean hasListener) {
9495
if (attributionHandler == null) {
95-
return new AttributionHandler(activityHandler, attributionPackage, startPaused);
96+
return new AttributionHandler(activityHandler, attributionPackage, startPaused, hasListener);
9697
}
97-
attributionHandler.init(activityHandler, attributionPackage, startPaused);
98+
attributionHandler.init(activityHandler, attributionPackage, startPaused, hasListener);
9899
return attributionHandler;
99100
}
100101

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void setOfflineMode(boolean enabled) {
7777

7878
private boolean checkActivityHandler() {
7979
if (activityHandler == null) {
80-
getLogger().error("Please initialize Adjust by calling 'onCreate' before");
80+
getLogger().error("Adjust not initialized correctly");
8181
return false;
8282
} else {
8383
return true;

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,27 @@ public class AttributionHandler implements IAttributionHandler {
2626
private ScheduledFuture waitingTask;
2727
private HttpClient httpClient;
2828
private boolean paused;
29+
private boolean hasListener;
2930

3031
public AttributionHandler(IActivityHandler activityHandler,
3132
ActivityPackage attributionPackage,
32-
boolean startPaused) {
33+
boolean startPaused,
34+
boolean hasListener) {
3335
scheduler = Executors.newSingleThreadScheduledExecutor();
3436
logger = AdjustFactory.getLogger();
3537
httpClient = Util.getHttpClient();
36-
init(activityHandler, attributionPackage, startPaused);
38+
init(activityHandler, attributionPackage, startPaused, hasListener);
3739
}
3840

3941
@Override
4042
public void init(IActivityHandler activityHandler,
4143
ActivityPackage attributionPackage,
42-
boolean startPaused) {
44+
boolean startPaused,
45+
boolean hasListener) {
4346
this.activityHandler = activityHandler;
4447
this.attributionPackage = attributionPackage;
4548
this.paused = startPaused;
49+
this.hasListener = hasListener;
4650
}
4751

4852
@Override
@@ -72,6 +76,9 @@ public void resumeSending() {
7276

7377
private void getAttribution(int delayInMilliseconds) {
7478
if (waitingTask != null) {
79+
if (waitingTask.getDelay(TimeUnit.MILLISECONDS) > delayInMilliseconds) {
80+
return;
81+
}
7582
waitingTask.cancel(false);
7683
}
7784

@@ -110,6 +117,9 @@ private void checkAttributionInternal(JSONObject jsonResponse) {
110117
}
111118

112119
private void getAttributionInternal() {
120+
if (!hasListener) {
121+
return;
122+
}
113123
if (paused) {
114124
logger.debug("Attribution Handler is paused");
115125
return;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public interface Constants {
2727
String BASE_URL = "https://app.adjust.com";
2828
String SCHEME = "https";
2929
String AUTHORITY = "app.adjust.com";
30-
String CLIENT_SDK = "android4.0.5";
30+
String CLIENT_SDK = "android4.0.6";
3131
String LOGTAG = "Adjust";
3232

3333
String ACTIVITY_STATE_FILENAME = "AdjustIoActivityState";

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
public interface IAttributionHandler {
99
public void init(IActivityHandler activityHandler,
1010
ActivityPackage attributionPackage,
11-
boolean startPaused);
11+
boolean startPaused,
12+
boolean hasListener);
1213

1314
public void getAttribution();
1415

Adjust/example/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ dependencies {
2828
// running mvn package
2929
//compile fileTree(dir: '../target', include: ['*.jar'])
3030
// using maven repository
31-
//compile 'com.adjust.sdk:adjust-android:4.0.5'
31+
//compile 'com.adjust.sdk:adjust-android:4.0.6'
3232
}

Adjust/example/proguard-rules.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
-keep class com.google.android.gms.ads.identifier.** { *; }
3131

3232
#-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
33-
# com.google.android.gms.ads.identifier.AdvertisingIdClient.Info getAdvertisingIdInfo (android.content.Contextxt);
33+
# com.google.android.gms.ads.identifier.AdvertisingIdClient.Info getAdvertisingIdInfo (android.content.Context);
3434
#}
3535
#-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient.Info {
3636
# String getId ();

0 commit comments

Comments
 (0)