メインコンテンツまでスキップ

Android UX Helper

Rokt UX Helperは、サーバー間環境で美しい顧客体験をレンダリングするのを助けるオープンソースプロジェクトです。このプロジェクトはGithubページで見つけることができ、貢献することもできます。

このドキュメントは、Rokt UX HelperをAndroidアプリに統合するプロセスを概説しており、サーバー間統合(S2S)と連携して、チェックアウト時に顧客に関連する体験を提供します。

システムバージョン
UX Helper0.4.0
Android バージョン/API レベル5.0+ (API レベル 21)
パッケージマネージャーMaven / Gradle
Compose BOM2024.09.02

インストールガイド

モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle.kts または <project>/<app-module>/build.gradle)に、Rokt UX Helper の依存関係を追加します。

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

RoktLayout の初期化

RoktLayout を Compose ビューに追加

// サーバーからエクスペリエンスレスポンスを取得
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(),
)
}

UXイベント

onUXEventハンドラーを使用して、ユーザーのインタラクションに関するリアルタイムのフィードバックを受け取ります。

最低限、RoktUXEvent.OpenUrlイベントがトリガーされたときにリンクを開くために、以下の例を使用して処理する必要があります。

備考

OpenUrl - onClose

OpenUrlタイプのイベントを処理する際には、onCloseコールバックを呼び出すことが重要です。これにより、RoktUXHelperが次のオファーに進むなどのロジックを実行することを通知します。

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 -> {
// ユーザーをアプリ内に留めるためにAndroidXブラウザまたは類似の機能を開く
val customTabsIntent = CustomTabsIntent.Builder().build()
customTabsIntent.launchUrl(context, Uri.parse(openUrlEvent.url))

openUrlEvent.onClose.invoke(openUrlEvent.id) // ユーザーが次のオファーの準備ができたときに呼び出す必要があります
}
OpenLinks.Externally, OpenLinks.Passthrough -> {
// 外部ブラウザを開いてユーザーがアプリを離れることを許可する
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(openUrlEvent.url))
context.startActivity(intent)

openUrlEvent.onClose.invoke(openUrlEvent.id) // ユーザーが次のオファーの準備ができたときに呼び出す必要があります
}
}
}
}
すべてのイベント

UXイベント

イベント説明パラメータ
OfferEngagementユーザーがオファーに関与したときにトリガーされますlayoutId: String
PositiveEngagementユーザーがオファーに積極的に関与したときにトリガーされますlayoutId: String
LayoutInteractiveレイアウトがレンダリングされ、操作可能になったときにトリガーされますlayoutId: String
LayoutReadyレイアウトが表示準備ができているが、まだコンテンツがレンダリングされていないときにトリガーされますlayoutId: String
LayoutClosedユーザーによってレイアウトが閉じられたときにトリガーされますlayoutId: String
LayoutCompletedオファーの進行が終了し、表示するオファーがもうないときにトリガーされますlayoutId: String
LayoutFailure何らかの失敗によりレイアウトを表示できなかったときにトリガーされますlayoutId: String (オプション)
OpenUrlリンクを開く必要があるときにトリガーされますurl: String, id: String, type: OpenLinks (internally/externally/Passthrough), onClose: (id: String) -> Unit, onError: (id: String, throwable: Throwable)

プラットフォームイベント

プラットフォームイベントは統合の重要な部分であり、バックエンドを通じてRoktに送信する必要があります。統合を容易にするために、オブジェクトはRoktPlatformEventsWrapper型であり、@Serializableを実装し、toJsonString関数を提供します。

onPlatformEvent = { events ->
// これらのプラットフォームイベントをRokt APIにイベントボディを含めて送信します
}

イベントの完全なリストはこちらで確認できます。

オプション: アプリ設定

カラーモード

カラーモードを使用すると、Roktレイアウトを表示する際に使用するテーマを固定できます。デフォルトでは、Roktは現在のシステムテーマに一致します。

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

RoktUxColorMode オブジェクト

説明
LIGHTアプリケーションはライトモードです
DARKアプリケーションはダークモードです
SYSTEMアプリケーションはシステムカラーモードにデフォルト設定されます

ImageLoader

Rokt UX Helperでは、画像の読み込みにcoilが使用されています。UX Helperには、アプリで利用できるいくつかの組み込み画像ローダーがあります。最も簡単で推奨される実装方法はNetworkStrategyです。ただし、使用しているネットワークライブラリや好みに応じて、カスタム画像読み込み戦略を作成することもできます。

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

フォント

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()
この記事は役に立ちましたか?