Aller au contenu principal

Android UX Helper

Rokt UX Helper est un projet open source qui vous aide à rendre de belles expériences client dans un environnement serveur à serveur. Vous pouvez trouver et contribuer au projet sur la page Github.

Ce document décrit le processus d'intégration de Rokt UX Helper dans votre application Android, qui fonctionne avec l'intégration serveur à serveur (S2S) pour offrir des expériences pertinentes à vos clients lors de leur passage à la caisse.

SystèmeVersion
UX Helper0.4.0
Version Android/Niveau API5.0+ (Niveau API 21)
Gestionnaire de paquetsMaven / Gradle
Compose BOM2024.09.02

Guide d'installationLien direct vers Guide d'installation

Dans votre fichier Gradle de module (niveau application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), ajoutez la dépendance Rokt UX Helper.

build.gradle.kts
implementation("com.rokt:roktux:0.1.0")

Initialiser RoktLayoutLien direct vers Initialiser RoktLayout

Ajoutez RoktLayout à votre vue Compose

// Retrieve the experience response from your server
val experienceResponse = viewModel.experienceResponse.collectAsState()

experienceResponse.value?.let { experienceResponse ->
RoktLayout(
experienceResponse = experienceResponse,
location = "RoktEmbedded1",
onUxEvent = { println("RoktEvent: UxEvent Received $it") },
onPlatformEvent = { println("RoktEvent: onPlatformEvent received $it") },
roktUxConfig = RoktUxConfig.builder()
.imageHandlingStrategy(NetworkStrategy())
.build(),
)
}

Événements UXLien direct vers Événements UX

Utilisez le gestionnaire onUXEvent pour recevoir des retours en temps réel sur les interactions utilisateur.

Au minimum, vous devez gérer lorsque l'événement RoktUXEvent.OpenUrl est déclenché afin de pouvoir ouvrir le lien en utilisant l'exemple ci-dessous.

info

OpenUrl - onCloseLien direct vers OpenUrl - onClose

Lors de la gestion d'un événement de type OpenUrl, il est crucial d'appeler le rappel onClose qui notifiera le RoktUXHelper pour exécuter une logique telle que passer à l'offre suivante.

openUrlEvent.onClose.invoke(openUrlEvent.id)
onUxEvent = { event ->
println("RoktEvent: onUxEvent received $event")

if (event is RoktUxEvent.OpenUrl) {
val openUrlEvent = event as RoktUxEvent.OpenUrl
when (openUrlEvent.type) {
OpenLinks.Internally -> {
// Open AndroidX browser or similar functionality to keep the user in app
val customTabsIntent = CustomTabsIntent.Builder().build()
customTabsIntent.launchUrl(context, Uri.parse(openUrlEvent.url))

openUrlEvent.onClose.invoke(openUrlEvent.id) // This must be called when the user is ready for the next offer
}
OpenLinks.Externally, OpenLinks.Passthrough -> {
// Open external browser allowing user to leave the app
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(openUrlEvent.url))
context.startActivity(intent)

openUrlEvent.onClose.invoke(openUrlEvent.id) // This must be called when the user is ready for the next offer
}
}
}
}
Tous les événements

Événements UXLien direct vers Événements UX

ÉvénementDescriptionParamètres
OfferEngagementDéclenché lorsque l'utilisateur interagit avec l'offrelayoutId: String
PositiveEngagementDéclenché lorsque l'utilisateur interagit positivement avec l'offrelayoutId: String
LayoutInteractiveDéclenché lorsqu'une mise en page a été rendue et est interactivelayoutId: String
LayoutReadyDéclenché lorsqu'une mise en page est prête à être affichée mais n'a pas encore rendu le contenulayoutId: String
LayoutClosedDéclenché lorsqu'une mise en page est fermée par l'utilisateurlayoutId: String
LayoutCompletedDéclenché lorsque la progression de l'offre atteint la fin et qu'aucune autre offre n'est disponible à afficherlayoutId: String
LayoutFailureDéclenché lorsqu'une mise en page n'a pas pu être affichée en raison d'une défaillancelayoutId: String (optionnel)
OpenUrlDéclenché lorsqu'un lien doit être ouverturl: String, id: String, type: OpenLinks (internally/externally/Passthrough), onClose: (id: String) -> Unit, onError: (id: String, throwable: Throwable)

PlatformEventsLien direct vers PlatformEvents

Les événements de plateforme sont une partie essentielle de l'intégration et doivent être envoyés à Rokt via votre backend. Pour faciliter l'intégration, l'objet est de type RoktPlatformEventsWrapper, implémente @Serializable et offre une fonction toJsonString.

onPlatformEvent = { events ->
// Send these platform events to Rokt API including the event body
}

Vous pouvez trouver une liste complète des événements ici.

Optionnel : Configurations de l'applicationLien direct vers Optionnel : Configurations de l'application

Mode couleurLien direct vers Mode couleur

Le mode couleur vous permet de définir le thème utilisé lors de l'affichage des mises en page Rokt. Par défaut, Rokt correspond au thème système actuel.

val config = RoktUxConfig.builder()
.colorMode(ColorMode.DARK)
.build()

Objet RoktUxColorModeLien direct vers Objet RoktUxColorMode

ValeurDescription
LIGHTL'application est en mode clair
DARKL'application est en mode sombre
SYSTEML'application utilise le mode couleur système

ImageLoaderLien direct vers ImageLoader

Dans Rokt UX Helper, coil est utilisé pour charger des images. UX Helper dispose de plusieurs chargeurs d'images intégrés que vous pouvez utiliser dans votre application. L'approche la plus simple et recommandée pour l'implémentation est NetworkStrategy, cependant, selon votre bibliothèque de réseau ou vos préférences, vous pouvez créer des stratégies de chargement d'images personnalisées.

val roktUxConfig = RoktUxConfig.builder()
.imageHandlingStrategy(NetworkStrategy())
.build()

PolicesLien direct vers Polices

val fontFamily = remember {
val robotoLight = Font(resId = R.font.roboto_light, weight = FontWeight.W100)
val robotoItalic = Font(resId = R.font.roboto_italic, weight = FontWeight.W400)
FontFamily(robotoLight, robotoItalic)
}

RoktUxConfig.builder()
.composeFontMap(mapOf("roboto" to fontFamily))
.build()
Cet article vous a-t-il été utile ?