For the complete documentation index, see llms.txt. This page is also available as Markdown.

NubrickSDK

NubrickSDK は Android SDK のエントリポイントです。Kotlin/Jetpack Compose と Java/XML のどちらからも、初期化、イベント送信、埋め込み、Remote Config、ユーザープロパティ更新を扱えます。

定義

object NubrickSDK {
    fun initialize(
        context: Context,
        config: Config
    )

    fun createConfig(
        projectId: String,
        onEventListener: NubrickGlobalEventListener? = null,
        onDispatchListener: NubrickDispatchListener? = null,
        trackCrashes: Boolean = true
    ): Config

    fun dispatch(event: NubrickEvent)

    fun setUserId(id: String)
    fun getUserId(): String?

    fun setUserProperty(key: String, value: Any)
    fun getUserProperty(key: String): String?

    fun setUserProperties(props: Map<String, Any>)
    fun getUserProperties(): Map<String, String>

    @Composable
    fun Embedding(
        id: String,
        modifier: Modifier = Modifier,
        arguments: Any? = null,
        onEvent: ((event: Event) -> Unit)? = null,
        content: (@Composable (state: EmbeddingLoadingState) -> Unit)? = null,
        onSizeChange: ((width: NubrickSize, height: NubrickSize) -> Unit)? = null
    )

    @Composable
    fun RemoteConfig(
        id: String,
        content: @Composable (RemoteConfigLoadingState) -> Unit
    )

    fun remoteConfig(id: String): Result<app.nubrick.nubrick.remoteconfig.RemoteConfig>

    fun fetchRemoteConfig(
        id: String,
        listener: RemoteConfigListener
    )
}

data class Config(
    val projectId: String,
    val onEvent: ((event: Event) -> Unit)? = null,
    val onDispatch: ((event: NubrickEvent) -> Unit)? = null,
    val trackCrashes: Boolean = true,
)

sealed class NubrickSize {
    data class Fixed(val value: Int) : NubrickSize()
    data object Fill : NubrickSize()
}

fun interface NubrickSizeListener {
    fun onSizeChange(width: NubrickSize, height: NubrickSize)
}

初期化

Kotlin / Compose

Java / XML

ApplicationonCreateConfig を作成し、SDK を初期化します。

アプリ全体のイベントを受け取る場合は、NubrickGlobalEventListenerNubrickDispatchListener を設定できる createConfig(...) を利用します。

trackCrashes だけを変更する場合は、NubrickSDK.createConfig("<YOUR_PROJECT_ID>", false) を利用できます。

イベント送信

カスタムイベントを発火させる

埋め込み(Compose)

フェーズを使う場合:

埋め込み(Java / XML)

XML に NubrickEmbeddingView を追加し、nubrickExperimentId にエクスペリメントIDまたはIDエイリアスを指定します。

エクスペリメントIDは Java から変更することもできます。

イベントと引数を設定する場合:

読み込み状態ごとのビューをカスタマイズする場合は、アプリモジュールで Kotlin/Jetpack Compose を有効にし、埋め込み部分だけを NubrickSDK.Embedding(...) で実装して、ComposeView を介して既存の XML レイアウトに組み込んでください。

埋め込みサイズ

Kotlin / Compose

onSizeChange を使うと、埋め込みコンポーネントの実サイズを取得できます。 このコールバックは、実際の埋め込みページが読み込まれたときだけ呼ばれます。Loading / NotFound / Failed では呼ばれません。

NubrickSize の意味:

  • NubrickSize.Fixed(value) は、エディタで固定サイズが設定されていることを表します。

  • NubrickSize.Fill は、その軸に固定サイズがなく、ホスト側のレイアウトに従うことを表します。

Java / XML

NubrickEmbeddingViewwrap_content を指定した軸には、エディタ側の固定サイズが自動的に反映されます。エディタ側が fill の場合は、親ビューの制約に従います。

setOnSizeChangeListener(...) を使うと、埋め込みコンポーネントの実サイズを受け取れます。このリスナーは、実際の埋め込みページが読み込まれたときだけ呼び出されます。NubrickSize.Fixed の値は getValue() で取得できます。

Remote Config

Kotlin / Compose

Java

Java では fetchRemoteConfig(...) で非同期に取得し、RemoteConfigListener で結果を受け取ります。このコールバックはメインスレッド上で呼び出されます。

ユーザープロパティ

このプロパティは、

  • どのユーザーがエクスペリメントのターゲットとなるかをフィルタリングする

  • エクスペリメント内のユーザー毎の動的な変数として表示する

ために使用されます。

Kotlin

Java

ビルトインのユーザープロパティ

デフォルトで、以下のビルトインプロパティが設定されています:

Key
Description

userId

User id (uuid by default)

languageCode

language code (e.g. ja for Japanese, en for English)

regionCode

region code (e.g. JP for Japan, US for United States)

sdkVersion

nubrick sdk version

osName

os name (Android)

osVersion

Android API level

appId

your app package name

appVersion

your app version

補足

  • setUserProperties / setUserProperty の値は String, Boolean, Int, Double などを渡せます。

  • getUserProperties() は、アプリが設定したカスタム値と userId を取得できます。

  • 失敗系の状態は Phases を参照してください。

Last updated