Skip to content

Commit 44701a1

Browse files
author
Josh Deffibaugh
committed
Sets up some more experiments against a real project
1 parent 471405a commit 44701a1

File tree

8 files changed

+148
-24
lines changed

8 files changed

+148
-24
lines changed

test-app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ android {
55
buildToolsVersion build_tools_version
66

77
defaultConfig {
8-
minSdkVersion min_sdk_version
8+
minSdkVersion 19
99
targetSdkVersion target_sdk_version
1010
versionCode 1
1111
versionName "1.0"

test-app/src/main/java/com/optimizely/ab/android/test_app/MainActivity.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.os.Bundle;
2020
import android.support.v7.app.AppCompatActivity;
2121
import android.view.View;
22+
import android.widget.Button;
2223
import android.widget.Toast;
2324

2425
import com.optimizely.ab.android.sdk.AndroidOptimizely;
@@ -29,29 +30,36 @@
2930
public class MainActivity extends AppCompatActivity {
3031

3132
private OptimizelyManager optimizelyManager;
33+
private MyApplication myApplication;
3234

3335
@Override
3436
protected void onCreate(Bundle savedInstanceState) {
3537
super.onCreate(savedInstanceState);
3638
setContentView(R.layout.activity_main);
39+
Button button = (Button) findViewById(R.id.button1);
3740

3841
// This could also be done via DI framework such as Dagger
39-
optimizelyManager = ((MyApplication) getApplication()).getOptimizelyManager();
42+
myApplication = (MyApplication) getApplication();
43+
optimizelyManager = myApplication.getOptimizelyManager();
4044

4145
// Load Optimizely from a compiled in data file
42-
AndroidOptimizely optimizely = optimizelyManager.getOptimizely(this, R.raw.data_file);
43-
Variation variation = optimizely.activate("experiment_0", "user_1");
46+
final AndroidOptimizely optimizely = optimizelyManager.getOptimizely(this, R.raw.data_file);
47+
Variation variation = optimizely.activate("experiment_0", myApplication.getAnonUserId(), myApplication.getAttributes());
4448
if (variation != null) {
4549
if (variation.is("variation_1")) {
46-
Toast.makeText(MainActivity.this, "Variation 1", Toast.LENGTH_LONG).show();
47-
} else {
48-
Toast.makeText(MainActivity.this, "Default", Toast.LENGTH_LONG).show();
50+
button.setText(R.string.button_1_text_var_1);
51+
} else if (variation.is("variation_2")) {
52+
button.setText(R.string.button_1_text_var_2);
4953
}
54+
} else {
55+
button.setText(R.string.button_1_text_default);
5056
}
5157

52-
findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
58+
button.setOnClickListener(new View.OnClickListener() {
5359
@Override
5460
public void onClick(View v) {
61+
optimizely.track("experiment_0", myApplication.getAnonUserId(), myApplication.getAttributes());
62+
5563
v.getContext().getResources().getString(R.string.app_name);
5664
Intent intent = new Intent(v.getContext(), SecondaryActivity.class);
5765
startActivity(intent);
@@ -69,11 +77,12 @@ protected void onStart() {
6977
optimizelyManager.start(this, new OptimizelyStartListener() {
7078
@Override
7179
public void onStart(AndroidOptimizely optimizely) {
72-
Variation variation = optimizely.activate("experiment_1", "user_1");
73-
80+
Variation variation = optimizely.activate("experiment_1", myApplication.getAnonUserId());
7481
if (variation != null) {
7582
if (variation.is("variation_1")) {
7683
Toast.makeText(MainActivity.this, "Variation 1", Toast.LENGTH_LONG).show();
84+
} else if (variation.is("variation_2")) {
85+
Toast.makeText(MainActivity.this, "Variation 2", Toast.LENGTH_LONG).show();
7786
}
7887
} else {
7988
Toast.makeText(MainActivity.this, "Default", Toast.LENGTH_LONG).show();

test-app/src/main/java/com/optimizely/ab/android/test_app/MyApplication.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,17 @@
1616
package com.optimizely.ab.android.test_app;
1717

1818
import android.app.Application;
19+
import android.content.Context;
20+
import android.content.SharedPreferences;
21+
import android.os.Build;
22+
import android.provider.Settings;
23+
import android.support.annotation.NonNull;
1924

2025
import com.optimizely.ab.android.sdk.OptimizelyManager;
2126

27+
import java.util.HashMap;
28+
import java.util.Map;
29+
import java.util.UUID;
2230
import java.util.concurrent.TimeUnit;
2331

2432
public class MyApplication extends Application {
@@ -28,6 +36,25 @@ public class MyApplication extends Application {
2836
public OptimizelyManager getOptimizelyManager() {
2937
return optimizelyManager;
3038
}
39+
public Map<String,String> getAttributes() {
40+
Map<String,String> attributes = new HashMap<>();
41+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
42+
attributes.put("locale", getResources().getConfiguration().getLocales().get(0).toString());
43+
} else {
44+
attributes.put("locale", getResources().getConfiguration().locale.toString());
45+
}
46+
return attributes;
47+
}
48+
@NonNull
49+
public String getAnonUserId() {
50+
SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
51+
String id = sharedPreferences.getString("userId", null);
52+
if (id == null) {
53+
id = UUID.randomUUID().toString();
54+
sharedPreferences.edit().putString("userId", id).apply();
55+
}
56+
return id;
57+
}
3158

3259
@Override
3360
public void onCreate() {

test-app/src/main/java/com/optimizely/ab/android/test_app/MyIntentService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected void onHandleIntent(Intent intent) {
3333
// Get Optimizely from the Intent that started this Service
3434
final OptimizelyManager optimizelyManager = ((MyApplication) getApplication()).getOptimizelyManager();
3535
AndroidOptimizely optimizely = optimizelyManager.getOptimizely();
36-
optimizely.track("goal_3", "user_1");
36+
// optimizely.track("goal_3", "user_1");
3737
}
3838
}
3939
}

test-app/src/main/java/com/optimizely/ab/android/test_app/SecondaryActivity.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ protected void onCreate(Bundle savedInstanceState) {
3232
setContentView(R.layout.activity_secondary);
3333

3434
// Get Optimizely from the Intent that started this Activity
35-
final OptimizelyManager optimizelyManager = ((MyApplication) getApplication()).getOptimizelyManager();
35+
final MyApplication myApplication = (MyApplication) getApplication();
36+
final OptimizelyManager optimizelyManager = myApplication.getOptimizelyManager();
3637
AndroidOptimizely optimizely = optimizelyManager.getOptimizely();
3738

3839
// track conversion event
39-
optimizely.track("goal_1", "user_1");
40+
optimizely.track("experiment_1", myApplication.getAnonUserId());
4041

4142
FragmentManager fragmentManager = getSupportFragmentManager();
4243
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
@@ -57,7 +58,7 @@ public void onStart() {
5758
super.onStart();
5859
final OptimizelyManager optimizelyManager = ((MyApplication) getActivity().getApplication()).getOptimizelyManager();
5960
AndroidOptimizely optimizely = optimizelyManager.getOptimizely();
60-
optimizely.track("goal_2", "user_1");
61+
// optimizely.track("goal_2", "user_1");
6162
}
6263
}
6364
}

test-app/src/main/res/layout/activity_secondary.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
android:id="@+id/textView1"
1515
android:layout_width="wrap_content"
1616
android:layout_height="wrap_content"
17-
android:text="@string/next_activity"/>
17+
android:text="@string/button_1_text_default"/>
1818
</RelativeLayout>
Lines changed: 93 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,96 @@
11
{
2-
"experiments": [ ],
2+
"experiments": [
3+
{
4+
"status": "Running",
5+
"key": "experiment_0",
6+
"layerId": "7674261139",
7+
"trafficAllocation": [
8+
{
9+
"entityId": "7674261140",
10+
"endOfRange": 5000
11+
},
12+
{
13+
"entityId": "7678410470",
14+
"endOfRange": 10000
15+
}
16+
],
17+
"audienceIds": [
18+
"7671101484"
19+
],
20+
"variations": [
21+
{
22+
"id": "7674261140",
23+
"key": "variation_1"
24+
},
25+
{
26+
"id": "7678410470",
27+
"key": "variation_2"
28+
}
29+
],
30+
"forcedVariations": {},
31+
"id": "7651112186"
32+
},
33+
{
34+
"status": "Running",
35+
"key": "experiment_1",
36+
"layerId": "7648347370",
37+
"trafficAllocation": [
38+
{
39+
"entityId": "7661891902",
40+
"endOfRange": 5000
41+
},
42+
{
43+
"entityId": "7654432134",
44+
"endOfRange": 10000
45+
}
46+
],
47+
"audienceIds": [],
48+
"variations": [
49+
{
50+
"id": "7661891902",
51+
"key": "variation_1"
52+
},
53+
{
54+
"id": "7654432134",
55+
"key": "variation_2"
56+
}
57+
],
58+
"forcedVariations": {},
59+
"id": "7676481120"
60+
}
61+
],
362
"version": "2",
4-
"audiences": [ ],
5-
"groups": [ ],
6-
"attributes": [ ],
7-
"projectId": "7595190003",
8-
"accountId": "6365361536",
9-
"events": [ ],
10-
"revision": "1"
63+
"audiences": [
64+
{
65+
"conditions": "[\"and\", [\"or\", [\"or\", {\"name\": \"locale\", \"type\": \"custom_attribute\", \"value\": \"en_US\"}]]]",
66+
"id": "7671101484",
67+
"name": "Americans"
68+
}
69+
],
70+
"groups": [],
71+
"attributes": [
72+
{
73+
"id": "7656544299",
74+
"key": "locale"
75+
}
76+
],
77+
"projectId": "7664231436",
78+
"accountId": "3279320409",
79+
"events": [
80+
{
81+
"experimentIds": [
82+
"7651112186"
83+
],
84+
"id": "7667071273",
85+
"key": "experiment_0"
86+
},
87+
{
88+
"experimentIds": [
89+
"7676481120"
90+
],
91+
"id": "7670870364",
92+
"key": "experiment_1"
93+
}
94+
],
95+
"revision": "10"
1196
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<resources>
22
<string name="app_name">Test App</string>
33
<string name="start_next_activity">Start Next Activity</string>
4-
<string name="next_activity">Next Activity</string>
4+
<string name="button_1_text_default">Next Activity</string>
5+
<string name="button_1_text_var_1">Start Next Activity!</string>
6+
<string name="button_1_text_var_2">Start Second Activity!</string>
57
</resources>

0 commit comments

Comments
 (0)