Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add traffic source parameters to global attributes #29

Merged
merged 2 commits into from
Jun 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,5 @@ dependencies {
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"

implementation 'software.aws.solution:clickstream:0.11.0'
implementation 'software.aws.solution:clickstream:0.13.0'
}
20 changes: 17 additions & 3 deletions android/app/src/main/java/com/kanyideveloper/joomia/JoomiaApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import androidx.compose.ui.semantics.testTagsAsResourceId
import com.amplifyframework.AmplifyException
import dagger.hilt.android.HiltAndroidApp
import software.aws.solution.clickstream.ClickstreamAnalytics
import software.aws.solution.clickstream.ClickstreamAttribute
import software.aws.solution.clickstream.ClickstreamConfiguration
import timber.log.Timber

@HiltAndroidApp
Expand All @@ -18,10 +20,22 @@ class JoomiaApp : Application() {
initTimber()
try {
Modifier.semantics { testTagsAsResourceId = true; testTagsAsResourceId = true }
ClickstreamAnalytics.init(applicationContext)
ClickstreamAnalytics.getClickStreamConfiguration()
val globalAttributes: ClickstreamAttribute = ClickstreamAttribute.builder()
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_SOURCE, "amazon")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_MEDIUM, "cpc")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN, "summer_promotion")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN_ID, "summer_promotion_01")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_TERM, "running_shoes")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CONTENT, "banner_ad_1")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID, "amazon_ad_123")
.add(ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID_PLATFORM, "amazon_ads")
.add(ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL, "Amazon Store")
.build()
val configuration = ClickstreamConfiguration()
.withLogEvents(true)
.withTrackScreenViewEvents(false)
.withTrackScreenViewEvents(true)
.withInitialGlobalAttributes(globalAttributes)
ClickstreamAnalytics.init(applicationContext, configuration)
Timber.i("MyApp", "Initialized ClickstreamAnalytics")
} catch (error: AmplifyException) {
Timber.e("MyApp", "Could not initialize ClickstreamAnalytics", error)
Expand Down
11 changes: 9 additions & 2 deletions ios/ModerneShopping/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,15 @@ class AppDelegate: NSObject, UIApplicationDelegate {
let configuration = ClickstreamConfiguration()
.withLogEvents(true)
.withInitialGlobalAttributes([
"channel": "test",
"isOpenNotification": true,
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_SOURCE: "amazon",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_MEDIUM: "cpc",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN: "summer_promotion",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CAMPAIGN_ID: "123",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_TERM: "running_shoes",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CONTENT: "banner_ad_1",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID: "amazon_ad_123",
ClickstreamAnalytics.Attr.TRAFFIC_SOURCE_CLID_PLATFORM: "amazon_ads",
ClickstreamAnalytics.Attr.APP_INSTALL_CHANNEL: "App Store"
])
try ClickstreamAnalytics.initSDK(configuration)
} catch {
Expand Down
74 changes: 44 additions & 30 deletions retail-web/src/main.js
Original file line number Diff line number Diff line change
@@ -1,69 +1,83 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0
import {createApp} from 'vue'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router';
import store from '@/store/store';
import router from './router'
import store from '@/store/store'

import './styles/tokens.css'
import {ClickstreamAnalytics, SendMode} from "@aws/clickstream-web";
import sensors from 'sa-sdk-javascript';
import {initializeApp} from 'firebase/app';
import {getAnalytics} from 'firebase/analytics';
import {AnalyticsLogger} from "@/analytics/AnalyticsLogger";
import { ClickstreamAnalytics, SendMode, Attr } from '@aws/clickstream-web'
import sensors from 'sa-sdk-javascript'
import { initializeApp } from 'firebase/app'
import { getAnalytics } from 'firebase/analytics'
import { AnalyticsLogger } from '@/analytics/AnalyticsLogger'

if (import.meta.env.VITE_CLICKSTREAM_APPID !== ""
if (import.meta.env.VITE_CLICKSTREAM_APPID !== ''
&& import.meta.env.VITE_CLICKSTREAM_APPID !== undefined
&& import.meta.env.VITE_CLICKSTREAM_ENDPOINT !== ""
&& import.meta.env.VITE_CLICKSTREAM_ENDPOINT !== undefined ) {
localStorage.setItem("clickstream_appId", import.meta.env.VITE_CLICKSTREAM_APPID)
localStorage.setItem("clickstream_endpoint", import.meta.env.VITE_CLICKSTREAM_ENDPOINT)
&& import.meta.env.VITE_CLICKSTREAM_ENDPOINT !== ''
&& import.meta.env.VITE_CLICKSTREAM_ENDPOINT !== undefined) {
localStorage.setItem('clickstream_appId',
import.meta.env.VITE_CLICKSTREAM_APPID)
localStorage.setItem('clickstream_endpoint',
import.meta.env.VITE_CLICKSTREAM_ENDPOINT)
}

if (import.meta.env.VITE_SENSORDATA_APPID !== ""
if (import.meta.env.VITE_SENSORDATA_APPID !== ''
&& import.meta.env.VITE_SENSORDATA_APPID !== undefined
&& import.meta.env.VITE_SENSORDATA_ENDPOINT !== ""
&& import.meta.env.VITE_SENSORDATA_ENDPOINT !== undefined ) {
localStorage.setItem("sensor_appId", import.meta.env.VITE_SENSORDATA_APPID)
localStorage.setItem("sensor_endpoint", import.meta.env.VITE_SENSORDATA_ENDPOINT)
&& import.meta.env.VITE_SENSORDATA_ENDPOINT !== ''
&& import.meta.env.VITE_SENSORDATA_ENDPOINT !== undefined) {
localStorage.setItem('sensor_appId', import.meta.env.VITE_SENSORDATA_APPID)
localStorage.setItem('sensor_endpoint',
import.meta.env.VITE_SENSORDATA_ENDPOINT)
}

// Initial Clickstream Web SDK
if (localStorage.getItem("clickstream_appId") !== null) {
if (localStorage.getItem('clickstream_appId') !== null) {
ClickstreamAnalytics.init({
appId: localStorage.getItem("clickstream_appId"),
endpoint: localStorage.getItem("clickstream_endpoint"),
isLogEvents: true,
sendMode: SendMode.Batch,
globalAttributes: {
[Attr.TRAFFIC_SOURCE_SOURCE]: 'amazon',
[Attr.TRAFFIC_SOURCE_MEDIUM]: 'cpc',
[Attr.TRAFFIC_SOURCE_CAMPAIGN]: 'summer_promotion',
[Attr.TRAFFIC_SOURCE_CAMPAIGN_ID]: 'summer_promotion_01',
[Attr.TRAFFIC_SOURCE_TERM]: 'running_shoes',
[Attr.TRAFFIC_SOURCE_CONTENT]: 'banner_ad_1',
[Attr.TRAFFIC_SOURCE_CLID]: 'amazon_ad_123',
[Attr.TRAFFIC_SOURCE_CLID_PLATFORM]: 'amazon_ads',
},
})
}

// Initial Sensor Data Analytics
if (localStorage.getItem("sensor_appId") !== null) {
sensors.init({
server_url: localStorage.getItem("sensor_endpoint") + '?appId='
+ localStorage.getItem("sensor_appId") + '&platform=Web&testBy=webRetailDemo',
server_url: localStorage.getItem('sensor_endpoint') + '?appId='
+ localStorage.getItem('sensor_appId') +
'&platform=Web&testBy=webRetailDemo',
show_log: true,
is_track_single_page: true,
use_client_time: true,
send_type: 'beacon',
heatmap: {
clickmap: 'default',
scroll_notice_map: 'default'
}
});
sensors.quick('autoTrack');
scroll_notice_map: 'default',
},
})
sensors.quick('autoTrack')
}


// Initial Firebase Analytics
if (AnalyticsLogger.firebaseEnabled()) {
const configString = import.meta.env.VITE_FIREBASE_CONFIG.replace(/(\w+)(?=:\s*')/g, '"$1"').replace(/'/g, '"');
const configString = import.meta.env.VITE_FIREBASE_CONFIG.replace(
/(\w+)(?=:\s*')/g, '"$1"').replace(/'/g, '"')
const firebaseConfig = JSON.parse(configString)
console.log(firebaseConfig)
const firebaseApp = initializeApp(firebaseConfig);
const analytics = getAnalytics(firebaseApp);
console.log("Firebase SDK initialized:", analytics)
const firebaseApp = initializeApp(firebaseConfig)
const analytics = getAnalytics(firebaseApp)
console.log('Firebase SDK initialized:', analytics)
}

// Initial for Vue
Expand Down