Kotlin Multiplatform SDKでオンボーディングを表示する
ビルダーを使ってオンボーディングをカスタマイズした場合、Kotlin Multiplatformアプリのコードでレンダリング処理を記述しなくても、ユーザーに表示できます。このようなオンボーディングには、表示内容と表示方法の両方が含まれています。
始める前に、以下を確認してください:
- Adapty Kotlin Multiplatform SDK 3.16.1以降がインストールされていること。
- オンボーディングを作成していること。
- オンボーディングをプレースメントに追加していること。
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()