Kotlin Multiplatform SDKでオンボーディングを表示する

ビルダーを使ってオンボーディングをカスタマイズした場合、Kotlin Multiplatformアプリのコードでレンダリング処理を記述しなくても、ユーザーに表示できます。このようなオンボーディングには、表示内容と表示方法の両方が含まれています。

始める前に、以下を確認してください:

  1. Adapty Kotlin Multiplatform SDK 3.16.1以降がインストールされていること。
  2. オンボーディングを作成していること。
  3. オンボーディングをプレースメントに追加していること。

Adapty Kotlin Multiplatform SDKでは、オンボーディングを表示する方法が2つあります:

  • Compose Multiplatformを使用する
  • Compose Multiplatformを使用しない

Compose Multiplatformを使用する

オンボーディングを表示するには、createOnboardingViewメソッドで作成したviewに対してview.present()メソッドを呼び出します。各viewは一度しか使用できません。再度オンボーディングを表示する必要がある場合は、createOnboardingViewをもう一度呼び出して新しいviewインスタンスを作成してください。

viewを再作成せずに再利用すると、エラーが発生する場合があります。


viewModelScope.launch {
    AdaptyUI.createOnboardingView(onboarding = onboarding).onSuccess { view ->
        view.present()
    }.onError { error ->
        // handle the error
    }
}

iOSの表示スタイルを設定する

present()メソッドにiosPresentationStyleパラメータを渡すことで、iOSでのオンボーディングの表示方法を設定できます。パラメータにはAdaptyUIIOSPresentationStyle.FULLSCREEN(デフォルト)またはAdaptyUIIOSPresentationStyle.PAGESHEETを指定できます。


viewModelScope.launch {
    val view = AdaptyUI.createOnboardingView(onboarding = onboarding).getOrNull()
    view?.present(iosPresentationStyle = AdaptyUIIOSPresentationStyle.PAGESHEET)
}

デフォルトでは、オンボーディング内のリンクはアプリ内ブラウザで開きます。これにより、アプリを切り替えることなくウェブページをアプリ内で表示でき、シームレスなユーザー体験を提供します。

代わりに外部ブラウザでリンクを開きたい場合は、externalUrlsPresentationパラメータをAdaptyWebPresentation.EXTERNAL_BROWSERに設定することでこの動作をカスタマイズできます:


viewModelScope.launch {
    AdaptyUI.createOnboardingView(
        onboarding = onboarding,
        externalUrlsPresentation = AdaptyWebPresentation.EXTERNAL_BROWSER // default – IN_APP_BROWSER
    ).onSuccess { view ->
        view.present()
    }.onError { error ->
        // handle the error
    }
}

Compose Multiplatformを使用しない

createNativeOnboardingViewはコアモジュールio.adapty:adapty-kmpの一部です。プロジェクトでCompose Multiplatformを使用しない場合、io.adapty:adapty-kmp-uiの依存関係は不要です。

Compose Multiplatformを使わずにオンボーディングを埋め込むには、createNativeOnboardingViewを呼び出します。レイアウトに追加できるAdaptyNativeOnboardingViewが返されます:

ビューを破棄する

レイアウトからビューを削除する際はdispose()を呼び出してください。これによりイベントリスナーの登録が解除され、内部リソースが解放されます。

nativeView.dispose()