Skip to content

Commit d0f6d2b

Browse files
zhu-xiaoweixiaoweii
andauthored
feat: add preset traffic source attributes (#78)
Co-authored-by: xiaoweii <[email protected]>
1 parent cd37cc4 commit d0f6d2b

File tree

3 files changed

+114
-6
lines changed

3 files changed

+114
-6
lines changed

README.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,24 @@ public void onCreate() {
7979
}
8080
```
8181
#### 3.2 Initialize the SDK with global attributes and custom configuration
82+
83+
The following example code shows how to add traffic source fields as global attributes when initializing the SDK.
84+
8285
```java
8386
import software.aws.solution.clickstream.ClickstreamAnalytics;
8487

8588
public void onCreate() {
8689
super.onCreate();
8790
try{
8891
ClickstreamAttribute globalAttributes = ClickstreamAttribute.builder()
89-
.add("_traffic_source_name", "Summer promotion")
90-
.add("_traffic_source_medium", "Search engine")
92+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_SOURCE, "amazon")
93+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_MEDIUM, "cpc")
94+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN, "summer_promotion")
95+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN_ID, "summer_promotion_01")
96+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_TERM, "running_shoes")
97+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CONTENT, "banner_ad_1")
98+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID, "amazon_ad_123")
99+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID_PLATFORM, "amazon_ads")
91100
.build();
92101
ClickstreamConfiguration configuration = new ClickstreamConfiguration()
93102
.withAppId("your appId")

clickstream/src/main/java/software/aws/solution/clickstream/ClickstreamAnalytics.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,5 +326,60 @@ public static class Attr {
326326
* screen unique id.
327327
*/
328328
public static final String SCREEN_UNIQUE_ID = ReservedAttribute.SCREEN_UNIQUE_ID;
329+
330+
/**
331+
* traffic source source.
332+
*/
333+
public static final String TRAFFIC_SOURCE_SOURCE = "_traffic_source_source";
334+
335+
/**
336+
* traffic source medium.
337+
*/
338+
public static final String TRAFFIC_SOURCE_MEDIUM = "_traffic_source_medium";
339+
340+
/**
341+
* traffic source campaign.
342+
*/
343+
public static final String TRAFFIC_SOURCE_CAMPAIGN = "_traffic_source_campaign";
344+
345+
/**
346+
* traffic source campaign id.
347+
*/
348+
public static final String TRAFFIC_SOURCE_CAMPAIGN_ID = "_traffic_source_campaign_id";
349+
350+
/**
351+
* traffic source term.
352+
*/
353+
public static final String TRAFFIC_SOURCE_TERM = "_traffic_source_term";
354+
355+
/**
356+
* traffic source content.
357+
*/
358+
public static final String TRAFFIC_SOURCE_CONTENT = "_traffic_source_content";
359+
360+
/**
361+
* traffic source clid.
362+
*/
363+
public static final String TRAFFIC_SOURCE_CLID = "_traffic_source_clid";
364+
365+
/**
366+
* traffic source clid platform.
367+
*/
368+
public static final String TRAFFIC_SOURCE_CLID_PLATFORM = "_traffic_source_clid_platform";
369+
370+
/**
371+
* app install channel.
372+
*/
373+
public static final String APP_INSTALL_CHANNEL = "_app_install_channel";
374+
375+
/**
376+
* event value.
377+
*/
378+
public static final String VALUE = "_value";
379+
380+
/**
381+
* event currency.
382+
*/
383+
public static final String CURRENCY = "_currency";
329384
}
330385
}

clickstream/src/test/java/software/aws/solution/clickstream/IntegrationTest.java

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ public void testAddItem() throws Exception {
243243
ClickstreamEvent event = ClickstreamEvent.builder()
244244
.name("testItem")
245245
.add(ClickstreamAnalytics.Item.ITEM_ID, 123)
246+
.add(ClickstreamAnalytics.Attr.VALUE, 11000)
247+
.add(ClickstreamAnalytics.Attr.CURRENCY, "USD")
246248
.setItems(new ClickstreamItem[] {item1, item2})
247249
.build();
248250
ClickstreamAnalytics.recordEvent(event);
@@ -274,7 +276,7 @@ public void testAddItem() throws Exception {
274276
public void testAddGlobalAttribute() throws Exception {
275277
long timestamp = System.currentTimeMillis();
276278
ClickstreamAttribute globalAttribute = ClickstreamAttribute.builder()
277-
.add("channel", "HUAWEI")
279+
.add(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL, "Amazon Store")
278280
.add("level", 5.1)
279281
.add("class", 6)
280282
.add("timestamp", timestamp)
@@ -296,7 +298,8 @@ public void testAddGlobalAttribute() throws Exception {
296298
JSONObject jsonObject = new JSONObject(eventString);
297299
JSONObject attribute = jsonObject.getJSONObject("attributes");
298300

299-
Assert.assertEquals("HUAWEI", attribute.getString("channel"));
301+
Assert.assertEquals("Amazon Store",
302+
attribute.getString(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL));
300303
Assert.assertEquals(5.1, attribute.getDouble("level"), 0.01);
301304
Assert.assertEquals(6, attribute.getInt("class"));
302305
Assert.assertTrue(attribute.getBoolean("isOpenNotification"));
@@ -309,6 +312,46 @@ public void testAddGlobalAttribute() throws Exception {
309312
}
310313
}
311314

315+
/**
316+
* test add traffic source attribute.
317+
*
318+
* @throws Exception exception
319+
*/
320+
@Test
321+
public void testAddGlobalAttributeForTrafficSource() throws Exception {
322+
ClickstreamAttribute globalAttribute = ClickstreamAttribute.builder()
323+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_SOURCE, "amazon")
324+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_MEDIUM, "cpc")
325+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN, "summer_promotion")
326+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN_ID, "summer_promotion_01")
327+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_TERM, "running_shoes")
328+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CONTENT, "banner_ad_1")
329+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID, "amazon_ad_123")
330+
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID_PLATFORM, "amazon_ads")
331+
.add(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL, "amazon_store")
332+
.build();
333+
ClickstreamAnalytics.addGlobalAttributes(globalAttribute);
334+
ClickstreamAnalytics.recordEvent("testEvent");
335+
assertEquals(1, dbUtil.getTotalNumber());
336+
try (Cursor cursor = dbUtil.queryAllEvents()) {
337+
cursor.moveToFirst();
338+
String eventString = cursor.getString(2);
339+
JSONObject jsonObject = new JSONObject(eventString);
340+
JSONObject attribute = jsonObject.getJSONObject("attributes");
341+
Assert.assertEquals("amazon", attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_SOURCE));
342+
Assert.assertEquals("cpc", attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_MEDIUM));
343+
Assert.assertEquals("summer_promotion",
344+
attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN));
345+
Assert.assertEquals("summer_promotion_01",
346+
attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN_ID));
347+
Assert.assertEquals("running_shoes", attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_TERM));
348+
Assert.assertEquals("banner_ad_1", attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CONTENT));
349+
Assert.assertEquals("amazon_ad_123", attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID));
350+
Assert.assertEquals("amazon_ads",
351+
attribute.getString(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID_PLATFORM));
352+
Assert.assertEquals("amazon_store", attribute.getString(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL));
353+
}
354+
}
312355

313356
/**
314357
* test add delete global attribute.
@@ -318,7 +361,7 @@ public void testAddGlobalAttribute() throws Exception {
318361
@Test
319362
public void testDeleteGlobalAttribute() throws Exception {
320363
ClickstreamAttribute globalAttribute = ClickstreamAttribute.builder()
321-
.add("channel", "HUAWEI")
364+
.add(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL, "Amazon Store")
322365
.add("level", 5.1)
323366
.add("class", 6)
324367
.add("isOpenNotification", true)
@@ -340,7 +383,8 @@ public void testDeleteGlobalAttribute() throws Exception {
340383
JSONObject jsonObject = new JSONObject(eventString);
341384
JSONObject attribute = jsonObject.getJSONObject("attributes");
342385

343-
Assert.assertEquals("HUAWEI", attribute.getString("channel"));
386+
Assert.assertEquals("Amazon Store",
387+
attribute.getString(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL));
344388
Assert.assertFalse(attribute.has("level"));
345389
Assert.assertTrue(attribute.getBoolean("isOpenNotification"));
346390
}

0 commit comments

Comments
 (0)