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 aux côtés de l'intégration Server-to-Server (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'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 RoktLayout

Ajoutez RoktLayout à votre vue Compose

// Récupérer la réponse d'expérience de votre serveur
val experienceResponse = viewModel.experienceResponse.collectAsState()

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

Événements UX

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

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

info

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 d'exécuter une logique comme passer à l'offre suivante.

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

if (event is RoktUxEvent.OpenUrl) {
val openUrlEvent = event as RoktUxEvent.OpenUrl
when (openUrlEvent.type) {
OpenLinks.Internally -> {
// Ouvrir le navigateur AndroidX ou une fonctionnalité similaire pour garder l'utilisateur dans l'application
val customTabsIntent = CustomTabsIntent.Builder().build()
customTabsIntent.launchUrl(context, Uri.parse(openUrlEvent.url))

openUrlEvent.onClose.invoke(openUrlEvent.id) // Cela doit être appelé lorsque l'utilisateur est prêt pour la prochaine offre
}
OpenLinks.Externally -> {
// Ouvrir le navigateur externe permettant à l'utilisateur de quitter l'application
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(openUrlEvent.url))
context.startActivity(intent)

openUrlEvent.onClose.invoke(openUrlEvent.id) // Cela doit être appelé lorsque l'utilisateur est prêt pour la prochaine offre
}
}
}
}
Tous les événements
### Événements UX
ÉvénementDescriptionParams
EngagementOffreDéclenché lorsque l'utilisateur s'engage avec l'offrelayoutId: String
EngagementPositifDéclenché lorsque l'utilisateur s'engage positivement avec l'offrelayoutId: String
LayoutInteractifDéclenché lorsque un layout a été rendu et est interactablelayoutId: String
LayoutPrêtDéclenché lorsque un layout est prêt à s'afficher mais n'a pas encore rendu de contenulayoutId: String
LayoutFerméDéclenché lorsque un layout est fermé par l'utilisateurlayoutId: String
LayoutComplétéDéclenché lorsque la progression de l'offre atteint la fin et qu'il n'y a plus d'offres disponibles à afficherlayoutId: String
LayoutÉchecDéclenché lorsque un layout n'a pas pu être affiché en raison d'un écheclayoutId: String (optionnel)
OuvrirUrlDéclenché lorsqu'un lien doit être ouverturl: String, id: String, type: OpenURLType (interne/externe), onClose: (id: String) -> Unit, onError: (id: String, throwable: Throwable)

ÉvénementsDePlateforme

Les événements de plateforme sont une partie essentielle de l'intégration et ils 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 ->
// Envoyer ces événements de plateforme à l'API Rokt incluant le corps de l'événement
}

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

Optionnel : Configurations de l'application

Mode de couleur

Le mode de couleur vous permet de fixer 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 RoktUxColorMode

ValeurDescription
LIGHTL'application est en mode clair
DARKL'application est en mode sombre
SYSTEML'application par défaut au mode couleur système

Chargeur d'images

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 à mettre en œuvre est NetworkStrategy, cependant, selon votre bibliothèque de mise en 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()

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 ?