ClickStream ist eine Ereignis-Agnostik-Echtzeit-Datenvergaser-Plattform. Mit ClickStream können Apps eine langjährige Verbindung in Echtzeit senden.
Das Wort "ClickStream" ist eine Spur digitaler Brotkrumen, die von Benutzern hinterlassen wurden, während sie sich auf den Weg durch eine Website oder eine mobile App klicken. Es ist mit wertvollen Kundeninformationen für Unternehmen geladen und seine Analyse und Nutzung hat sich als leistungsstarke Datenquelle herausgestellt.
Um mehr über ClickStream zu erfahren, können Sie unseren mittleren Beitrag lesen
ClickStream bietet eine End -to -End -Lösung für die Aufnahme von Ereignissen. Wenn Sie die Backend -Infrastruktur einrichten


build.gradle hinzu. Gradle Ihres Projekts. buildscript {
repositories {
mavenCentral()
}
}build.gradle die folgenden Abhängigkeiten hinzu. Gradle dependencies {
val version = " x.y.z "
// Required
implementation ' com.gojek.clickstream:clickstream-android:[latest_version] '
implementation ' com.gojek.clickstream:clickstream-lifecycle:[latest_version] '
// Optional
implementation ' com.gojek.clickstream:clickstream-health-metrics:[latest_version] '
}Standardmäßig hat ClickStream die Regeln eingebettet, sodass der Client die Regeln nicht ausdrücklich hinzugefügt hat
-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }
# Scarlet
-if interface * { @com.tinder.scarlet.ws.* <methods>; }
-keep,allowobfuscation interface <1>
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@com.tinder.scarlet.ws.* <methods>;
}
# Keep the ProcessLifecycleInitializer meta
-keepresourcexmlelements manifest/application/provider/meta-data@name=androidx.lifecycle.ProcessLifecycleInitializer
-keepresourcexmlelements manifest/application/provider/meta-data@value=androidx.startup
Sobald Sie die Abhängigkeiten hinzugefügt und Ihr Gradle -Projekt synchronisiert haben, besteht der nächste Schritt darin, ClickStream zu initialisieren.
Die Initialisierung des ClickStream kann im Hintergrund-Thread oder im Hauptgespräch erfolgen. In der Anwendungsklasse sollte der Aufruf durchgeführt werden. So dass die Initialisierung nur einmal erfolgt.
So erstellen Sie eine ClickStream -Instanz, können Sie das folgende Setup durchführen:
class App : Application () {
override fun onCreate () {
initClickStream()
}
private fun initClickStream () {
ClickStream .initialize(
configuration = CSConfiguration . Builder (
context = context,
info = CSInfo (
appInfo = appInfo,
locationInfo = locationInfo,
deviceInfo = csDeviceInfo,
customerInfo = customerInfo,
sessionInfo = sessionInfo
),
config = getBuildConfig(config),
appLifeCycle = DefaultCSAppLifeCycleObserver (context),
healthGateway = DefaultOpCSHealthGateway .factory( /* args */ )
). apply {
setLogLevel( DEBUG )
/* */
setCSSocketConnectionListener(connectionListener())
}.build())
}
/* *
* @see [CSConnectionEvent] for more detail explanation
*/
private fun onConnectionListener (): CSSocketConnectionListener {
return object : CSSocketConnectionListener {
override fun onEventChanged ( event : CSConnectionEvent ) {
is OnConnectionConnecting -> {}
is OnConnectionConnected -> {}
is OnMessageReceived -> {}
is OnConnectionClosing -> {}
is OnConnectionClosed -> {}
is OnConnectionFailed -> {}
}
}
}
}Hält die Konfigurationen für ClickStream. Diese Einschränkungen ermöglichen eine feinkörnige Kontrolle über das Verhalten der Bibliothek wie Dauer zwischen Wiederholungen, Spülenereignissen, wenn die App im Hintergrund usw.
| Beschreibung | Variable | Typ | Standardwert |
|---|---|---|---|
| Anzahl der Ereignisse, die in einer einzigen Anfrage kombiniert werden können | EventSperbatch | Int | 20 |
| Verzögerung zwischen zwei Anfragen (in Millis) | BatchPeriode | Lang | 10000 |
| Flagge für die Ermöglichung erzwungener Spülen von Ereignissen | Flushonbackground | Boolean | FALSCH |
| Wartenzeit danach wird die Steckdose getrennt | ConnectionterminationTimerWaitTimeInmillis | Lang | 5000 |
| Fahnen Sie Flag, um das Spülen von Ereignissen durch Hintergrundaufgabe zu ermöglichen | Hintergrundinformationen | Boolean | FALSCH |
| Erstverzögerung für die Hintergrundaufgabe (in Stunde) | WorkRequestDelayinhr | Lang | 1 |
Hält die Konfiguration für netzwerkbezogene. zB Timeouts für den Netzwerkkanal konfigurieren.
| Beschreibung | Variable | Typ | Standardwert |
|---|---|---|---|
| Endpunkt für den Web -Socket -Server | Endpunkt | Saite | Kein Standardwert |
| Timeout anschließen, um von OKHTTP (in Sekunden) zu verwenden, | ConnectTimeout | Lang | 10 |
| Lesen Sie Timeout, um von OKHTTP (in Sekunden) zu verwenden, | Readtimeout | Lang | 10 |
| Timeout schreiben, um von OKHTTP (in Sekunden) zu verwenden, | WriteTimeout | Lang | 10 |
| Intervall zwischen von dem Kunden initiierten Pings (in Sekunden) | pinginterval | Lang | 1 |
| Erste Wiederholungsdauer für die Wiederholung der Backoff -Strategie (in Millisekunden) | initialRetryDurationInms | Lang | 1000 |
| Maximale Wiederholungsdauer für die Wiederholung der Backoff -Strategie (in Millisekunden) | MaxConnectionRetryDurationInms | Lang | 6000 |
| Maximale Wiederholungen pro Stapelanforderung | MaxrieSPerbatch | Lang | 20 |
| Maximales Timeout für eine Anfrage zum Empfangen von ACK (in Millisekunden) | MaxRequestackTimeout | Lang | 10000 |
| Okhttpclient -Instanz, die vom Kunden vergangen ist | Okhttpclient | Okhttpclient | Kein Standardwert |
Hält den Klassennamen, der in InstantEvent (QoS) oder RealTimeEvent (QoS1) eingestuft wird.
| Beschreibung | Variable | Typ | Standardwert |
|---|---|---|---|
| Hält alle Eventypes | Eventypes | Event Classifier | [EventClassifier (Identifier: "Echtzeit", Eventnames: []), EventClassifier (ID ID: "Instant", Eventnames: [])] |
Zerstören Sie die Instanz von ClickStream, z. B. kann aufgerufen werden, wenn Benutzer aus der App abweichen.
ClickStream .release()Wenn ClickStream auf der Client-Seite eine Protodefinition verwenden, können Sie einen Messagelite erstellen und direkt über ClickStreamsDK senden.
Zum Beispiel haben Sie eine Protodefinition namens Rating.java definiert, die die folgenden Eigenschaften hat
rating: Float
reason: String
So können wir das Bewertungsobjekt nur mit einem Builder -Muster erstellen.
val event = Rating .newBuilder()
.setRating( 4.5 )
.setReason( " nice! " )
.build()
// wrap event in CSEvent
val csEvent = CSEvent (
guid = UUID .randomUUID().toString(),
timestamp = Timestamp .getDefaultInstance(),
message = event
)
// track the event
ClickStream .getInstance().trackEvent(csEvent)Glückwunsch! Du bist fertig !.
Um die Beispiel -App auszuführen, befolgen Sie diese Anweisung bitte
./gradlew :app:installDebug oder via Play -Taste im Android Studio| Abbildung 1 | Abbildung 2 |
|---|---|
![]() | ![]() |
Event Visualiser ist ein Android -Tool, um die Client -Ereignisse an ClickStream zu visualisieren.
Fügen Sie dem build.gradle Ihres Moduls den Anhänger hinzu. Gradle.
dependencies {
val latest_version = " x.y.z "
implementation( " com.gojek.clickstream:clickstream-event-visualiser: $latest_version " )
implementation( " com.gojek.clickstream:clickstream-event-visualiser-ui: $latest_version " )
}CSEventVisualiserListener zu ClickStream hinzu.CSEventVisualiserUI.initialise(this) an, um den Ereignis -Visualiser zu initialisieren. class App : Application () {
/* */
private fun initClickStream () {
ClickStream .initialize( /* */ ). apply {
/* */
addEventListener( CSEventVisualiserListener .getInstance())
}.build()
CSEventVisualiserUI .initialise( this )
}
}CSEventVisualiserUI.getInstance().show() , um ein schwimmendes Fenster anzuzeigen und alle Ereignisse von ClickStream aufzunehmen. 

Wenn Sie auf das Fenster klicken, wird er zum Ereignis -Startbildschirm gelandet, auf dem alle eindeutigen Ereignisse aufgeführt sind. Sie können auf eine beliebige Veranstaltung klicken, um die Ereignisdetails zu überprüfen.
Ereignisse können die folgenden Zustände haben -



Da Event Visualiser ein Debug -Tool ist, das nur von Entwicklern und Testteams verwendet wird, sollte es idealerweise nicht mit Release -Builds gebündelt werden.
Zu diesem Zweck gibt es leichte alternative Noop-Abhängigkeiten (keine Operation).
dependencies {
val latest_version = " x.y.z "
// Use main dependency for debug build types
debugImplementation( " com.gojek.clickstream:clickstream-event-visualiser: $latest_version " )
debugImplementation( " com.gojek.clickstream:clickstream-event-visualiser-ui: $latest_version " )
// Use NoOp dependency for release build types
releaseImplementation( " com.gojek.clickstream:clickstream-event-visualiser-noop: $latest_version " )
releaseImplementation( " com.gojek.clickstream:clickstream-event-visualiser-ui-noop: $latest_version " )
} Copyright 2022 GOJEK
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.