Skip to content

Commit

Permalink
Merge pull request #116 from adjust/attribution_handler
Browse files Browse the repository at this point in the history
Attribution handler
  • Loading branch information
Uglješa Erceg committed May 8, 2015
2 parents 2203cc3 + e2eecb2 commit 18d8932
Show file tree
Hide file tree
Showing 20 changed files with 340 additions and 83 deletions.
2 changes: 1 addition & 1 deletion Adjust/adjust/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ android {
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "4.0.5"
versionName "4.0.6"
}
}

Expand Down
39 changes: 34 additions & 5 deletions Adjust/adjust/src/main/java/com/adjust/sdk/ActivityHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

package com.adjust.sdk;

import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
Expand Down Expand Up @@ -89,6 +90,25 @@ public static ActivityHandler getInstance(AdjustConfig adjustConfig) {
return null;
}

if (adjustConfig.processName != null) {
int currentPid = android.os.Process.myPid();
ActivityManager manager = (ActivityManager) adjustConfig.context.getSystemService(Context.ACTIVITY_SERVICE);

if (manager == null) {
return null;
}

for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {
if (processInfo.pid == currentPid) {
if (!processInfo.processName.equalsIgnoreCase(adjustConfig.processName)) {
AdjustFactory.getLogger().info("Skipping initialization in background process (%s)", processInfo.processName);
return null;
}
break;
}
}
}

ActivityHandler activityHandler = new ActivityHandler(adjustConfig);
return activityHandler;
}
Expand Down Expand Up @@ -140,6 +160,7 @@ public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (activityState != null) {
activityState.enabled = enabled;
writeActivityState();
}
if (enabled) {
if (toPause()) {
Expand Down Expand Up @@ -441,10 +462,17 @@ private void processSession() {
}

private void checkAttributionState() {
// if there is no attribution saved, or there is one being asked
if (attribution == null || activityState.askingAttribution) {
getAttributionHandler().getAttribution();
// if it's a new session
if (activityState.subsessionCount <= 1) {
return;
}

// if there is already an attribution saved and there was no attribution being asked
if (attribution != null && !activityState.askingAttribution) {
return;
}

getAttributionHandler().getAttribution();
}

private void endInternal() {
Expand All @@ -457,8 +485,8 @@ private void endInternal() {
}

private void trackEventInternal(AdjustEvent event) {
if (!isEnabled()) return;
if (!checkEvent(event)) return;
if (!activityState.enabled) return;

long now = System.currentTimeMillis();

Expand Down Expand Up @@ -749,7 +777,8 @@ private IAttributionHandler getAttributionHandler() {
ActivityPackage attributionPackage = getAttributionPackage();
attributionHandler = AdjustFactory.getAttributionHandler(this,
attributionPackage,
toPause());
toPause(),
adjustConfig.hasListener());
}
return attributionHandler;
}
Expand Down
3 changes: 3 additions & 0 deletions Adjust/adjust/src/main/java/com/adjust/sdk/AdjustConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class AdjustConfig {
Context context;
String appToken;
String environment;
String processName;
LogLevel logLevel;
String sdkPrefix;
Boolean eventBufferingEnabled;
Expand Down Expand Up @@ -47,6 +48,8 @@ public void setSdkPrefix(String sdkPrefix) {
this.sdkPrefix = sdkPrefix;
}

public void setProcessName(String processName) { this.processName = processName; }

public void setDefaultTracker(String defaultTracker) {
this.defaultTracker = defaultTracker;
}
Expand Down
7 changes: 4 additions & 3 deletions Adjust/adjust/src/main/java/com/adjust/sdk/AdjustFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,12 @@ public static IActivityHandler getActivityHandler(AdjustConfig config) {

public static IAttributionHandler getAttributionHandler(IActivityHandler activityHandler,
ActivityPackage attributionPackage,
boolean startPaused) {
boolean startPaused,
boolean hasListener) {
if (attributionHandler == null) {
return new AttributionHandler(activityHandler, attributionPackage, startPaused);
return new AttributionHandler(activityHandler, attributionPackage, startPaused, hasListener);
}
attributionHandler.init(activityHandler, attributionPackage, startPaused);
attributionHandler.init(activityHandler, attributionPackage, startPaused, hasListener);
return attributionHandler;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public void setOfflineMode(boolean enabled) {

private boolean checkActivityHandler() {
if (activityHandler == null) {
getLogger().error("Please initialize Adjust by calling 'onCreate' before");
getLogger().error("Adjust not initialized correctly");
return false;
} else {
return true;
Expand Down
16 changes: 13 additions & 3 deletions Adjust/adjust/src/main/java/com/adjust/sdk/AttributionHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,27 @@ public class AttributionHandler implements IAttributionHandler {
private ScheduledFuture waitingTask;
private HttpClient httpClient;
private boolean paused;
private boolean hasListener;

public AttributionHandler(IActivityHandler activityHandler,
ActivityPackage attributionPackage,
boolean startPaused) {
boolean startPaused,
boolean hasListener) {
scheduler = Executors.newSingleThreadScheduledExecutor();
logger = AdjustFactory.getLogger();
httpClient = Util.getHttpClient();
init(activityHandler, attributionPackage, startPaused);
init(activityHandler, attributionPackage, startPaused, hasListener);
}

@Override
public void init(IActivityHandler activityHandler,
ActivityPackage attributionPackage,
boolean startPaused) {
boolean startPaused,
boolean hasListener) {
this.activityHandler = activityHandler;
this.attributionPackage = attributionPackage;
this.paused = startPaused;
this.hasListener = hasListener;
}

@Override
Expand Down Expand Up @@ -72,6 +76,9 @@ public void resumeSending() {

private void getAttribution(int delayInMilliseconds) {
if (waitingTask != null) {
if (waitingTask.getDelay(TimeUnit.MILLISECONDS) > delayInMilliseconds) {
return;
}
waitingTask.cancel(false);
}

Expand Down Expand Up @@ -110,6 +117,9 @@ private void checkAttributionInternal(JSONObject jsonResponse) {
}

private void getAttributionInternal() {
if (!hasListener) {
return;
}
if (paused) {
logger.debug("Attribution Handler is paused");
return;
Expand Down
2 changes: 1 addition & 1 deletion Adjust/adjust/src/main/java/com/adjust/sdk/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public interface Constants {
String BASE_URL = "https://app.adjust.com";
String SCHEME = "https";
String AUTHORITY = "app.adjust.com";
String CLIENT_SDK = "android4.0.5";
String CLIENT_SDK = "android4.0.6";
String LOGTAG = "Adjust";

String ACTIVITY_STATE_FILENAME = "AdjustIoActivityState";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
public interface IAttributionHandler {
public void init(IActivityHandler activityHandler,
ActivityPackage attributionPackage,
boolean startPaused);
boolean startPaused,
boolean hasListener);

public void getAttribution();

Expand Down
2 changes: 1 addition & 1 deletion Adjust/example/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ dependencies {
// running mvn package
//compile fileTree(dir: '../target', include: ['*.jar'])
// using maven repository
//compile 'com.adjust.sdk:adjust-android:4.0.5'
//compile 'com.adjust.sdk:adjust-android:4.0.6'
}
2 changes: 1 addition & 1 deletion Adjust/example/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
-keep class com.google.android.gms.ads.identifier.** { *; }

#-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
# com.google.android.gms.ads.identifier.AdvertisingIdClient.Info getAdvertisingIdInfo (android.content.Contextxt);
# com.google.android.gms.ads.identifier.AdvertisingIdClient.Info getAdvertisingIdInfo (android.content.Context);
#}
#-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient.Info {
# String getId ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ public void onCreate() {
// set default tracker
//config.setDefaultTracker("{YourDefaultTracker}");

// set process name
//config.setProcessName("com.adjust.example");

// set attribution delegate
config.setOnAttributionChangedListener(new OnAttributionChangedListener() {
@Override
Expand Down
2 changes: 1 addition & 1 deletion Adjust/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>adjust-android</artifactId>
<groupId>com.adjust.sdk</groupId>
<version>4.0.5</version>
<version>4.0.6</version>
<packaging>jar</packaging>
<name>Adjust Android SDK</name>
<url>https://github.com/adjust/android_sdk</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@ public MockAttributionHandler(MockLogger testLogger) {
}

@Override
public void init(IActivityHandler activityHandler, ActivityPackage attributionPackage, boolean startPaused) {
testLogger.test(prefix + "init, startPaused: " + startPaused);
public void init(IActivityHandler activityHandler,
ActivityPackage attributionPackage,
boolean startPaused,
boolean hasListener) {
testLogger.test(prefix + "init, startPaused: " + startPaused +
", hasListener: " + hasListener);
this.activityHandler = activityHandler;
this.attributionPackage = attributionPackage;
}
Expand Down
Loading

0 comments on commit 18d8932

Please sign in to comment.