在 Kotlin Multiplatform SDK 中获取用户引导

用户引导功能已在 SDK v4 中废弃,并将在未来版本中移除。 该功能不再接受修复或改进。请改用流程:与在 WebView 中运行的用户引导不同,流程直接在设备上原生渲染,带来更流畅的动画效果、一致的原生视觉体验、更快的加载速度,且无需依赖 WebView 运行时。请参阅获取流程与付费墙展示流程与付费墙开始使用。

Adapty 看板中使用编辑工具完成用户引导的视觉设计之后,您可以在 Kotlin Multiplatform 应用中展示它。第一步是获取与版位关联的用户引导及其视图配置,具体步骤如下所示。

开始之前,请确认:

  1. 已安装 Adapty Kotlin Multiplatform SDK 3.15.0 或更高版本。
  2. 创建用户引导
  3. 已将用户引导添加到版位

获取用户引导

当你使用我们的无代码编辑工具创建用户引导后,它会以容器的形式存储,其中包含应用需要获取并展示的配置信息。该容器负责管理整个体验——包括显示哪些内容、如何呈现,以及如何处理用户交互(如测验答案或表单输入)。容器还会自动追踪数据分析事件,无需单独实现视图追踪。

为了获得最佳性能,建议尽早获取用户引导配置,以便图片有足够的时间在展示给用户之前完成下载。

要获取用户引导,请使用 getOnboarding 方法:


Adapty.getOnboarding(
    placementId = "YOUR_PLACEMENT_ID",
    locale = "en",
    fetchPolicy = AdaptyPaywallFetchPolicy.Default,
    loadTimeout = 5.seconds
).onSuccess { paywall ->
    // the requested paywall
}.onError { error ->
    // handle the error
}

参数:

参数是否必填描述
placementId必填目标版位的标识符。此值为您在 Adapty 看板中创建版位时所指定的值。
locale

可选

默认值:en

用户引导本地化的标识符。该参数应为由一个或两个子标签通过减号(-)连接组成的语言代码。第一个子标签表示语言,第二个子标签表示地区。

示例:en 表示英语,pt-br 表示巴西葡萄牙语。

fetchPolicy默认值:.reloadRevalidatingCacheData

默认情况下,SDK 会尝试从服务器加载数据,若加载失败则返回缓存数据。我们推荐使用此选项,因为它能确保用户始终获取最新数据。

但如果您认为用户的网络环境不稳定,可以考虑使用 .returnCacheDataElseLoad,在缓存数据存在时优先返回缓存。这种情况下,用户获取的数据可能不是最新的,但无论网络状况多差,加载速度都会更快。缓存会定期更新,因此在会话期间使用缓存以减少网络请求是安全的。

请注意,缓存在应用重启后依然保留,仅在应用卸载重装或手动清理时才会清除。

Adapty SDK 通过两层机制在本地存储用户引导:上述定期更新的缓存,以及备用用户引导。我们还使用 CDN 加速用户引导的获取,并设有独立的备用服务器以应对 CDN 不可用的情况。该系统旨在确保您始终获取最新版本的用户引导,同时在网络条件较差时也能保持可靠性。

loadTimeout默认值:5 秒

该值限制此方法的超时时间。若超时,将返回缓存数据或本地备用数据。

请注意,在少数情况下,此方法的实际超时时间可能略晚于 loadTimeout 中指定的值,因为该操作在底层可能包含多个不同的请求。

响应参数:

参数描述
Onboarding一个 AdaptyOnboarding 对象,包含:用户引导标识符与配置、远程配置以及其他若干属性。

使用默认目标受众用户引导加速获取用户引导

通常情况下,用户引导的获取几乎是即时完成的,无需担心速度问题。但当您配置了大量目标受众和用户引导,且用户网络连接较差时,获取用户引导可能会比预期花费更长时间。在这种情况下,您可能希望展示一个默认用户引导,以确保流畅的用户体验,而不是什么都不显示。

要解决这个问题,您可以使用 getOnboardingForDefaultAudience 方法,该方法会获取指定版位中针对 All Users 目标受众的用户引导。但请务必了解,推荐的方式是通过 getOnboarding 方法来获取用户引导,详见上文的获取用户引导章节。

建议使用 getOnboarding 而非 getOnboardingForDefaultAudience,因为后者存在以下重要限制:

  • 兼容性问题:在支持多个应用版本时可能引发问题,需要进行向后兼容设计,否则旧版本可能显示异常。
  • 无个性化:仅展示”全部用户”目标受众的内容,无法根据国家、归因或自定义属性进行定向。

如果更快的获取速度对你的使用场景更重要,请按以下方式使用 getOnboardingForDefaultAudience。否则,请按上文所述使用 getOnboarding


Adapty.getOnboardingForDefaultAudience(
    placementId = "YOUR_PLACEMENT_ID",
    locale = "en",
    fetchPolicy = AdaptyPaywallFetchPolicy.Default,
).onSuccess { paywall ->
    // the requested paywall
}.onError { error ->
    // handle the error
}

参数:

参数是否必填描述
placementId必填所需版位的标识符。该值在 Adapty 看板中创建版位时由您指定。
locale

可选

默认值:en

用户引导本地化的标识符。该参数应为语言代码,由一个或两个子标签组成,以连字符(-)分隔。第一个子标签表示语言,第二个子标签表示地区。
示例:en 表示英语,pt-br 表示巴西葡萄牙语。
fetchPolicy默认值:.reloadRevalidatingCacheData

默认情况下,SDK 会尝试从服务器加载数据,如果失败则返回缓存数据。我们推荐此选项,因为它能确保用户始终获取最新数据。

但如果您认为用户的网络连接不稳定,可以考虑使用 .returnCacheDataElseLoad,在缓存存在时直接返回缓存数据。这样用户获取到的数据可能不是最新的,但无论网络状况如何,加载速度都会更快。缓存会定期更新,因此在会话期间使用缓存以减少网络请求是安全的。

请注意,缓存在应用重启后依然保留,只有在卸载重装应用或手动清理时才会被清除。

Adapty SDK 通过两层机制在本地存储用户引导:上述定期更新的缓存,以及备用用户引导。我们还使用 CDN 加速用户引导的获取,并在 CDN 不可用时提供独立的备用服务器。该机制旨在确保您始终能获取最新版本的用户引导,同时在网络条件较差的情况下也能保证可靠性。