在 Unity SDK 中优化流程与付费墙的获取

在 Unity 中可靠地获取流程或付费墙需要做到三点:快速渲染、返回针对目标受众的实验变体,以及在网络较慢时优雅地降级。以下规则涵盖实现这一目标所需的时机选择、缓存策略和备用方案。

Tip

规则假设 Adapty.Activate() 和 Adapty.Identify() 已完成调用。请参阅 Unity SDK 调用顺序。

规则与注意事项

建议做法不建议做法原因
仅获取即将展示的版位。启动时并发预取所有版位。批量预取会阻塞主线程,并在请求高峰期间导致黑屏。
在归因有机会完成解析后再获取 GetFlow,例如在 Activate 之后延迟 1–2 秒,或等待 OnLoadLatestProfile 触发后再调用。在 Awake() 中调用 GetFlow。此时归因尚未到达。流程会基于默认目标受众进行解析,从而悄无声息地绕过市场细分和 ASA 个性化设置。
设置 loadTimeout 并为每个版位配置备用付费墙。无限期等待 GetFlow 返回。如果没有超时机制,网络状况较差的用户会一直看到空白屏幕,直到网络恢复——或者直接关闭应用。

有关 fetchPolicy 和 loadTimeout 参数的说明,请参阅获取付费墙和产品;有关如何选择合适版位的信息,请参阅版位。

从应用包中显示首屏媒体

流程会从 Adapty 下载图片和视频。若要让首屏媒体立即呈现,可改为从应用包中提供。这是复用已有素材的好方法,比如现有原生用户引导的视觉资源。

  1. 在 Flow & Paywall Builder 中,为图片或视频设置自定义媒体 ID。你在那里上传的文件将作为备用资源。
  2. 将文件添加到你的 Unity 项目中。
  3. 创建流程视图时,使用 SetCustomAssets 为该 ID 传入打包的文件:
// "welcome_video" is the custom media ID set in the Flow & Paywall Builder
var bundledAssets = new Dictionary<string, AdaptyCustomAsset>
{
    { "welcome_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/welcome.mp4") }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomAssets(bundledAssets);

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});

打包文件会增加应用的下载体积,因此只需打包用户首次看到的媒体资源。

未捆绑的媒体文件也能立即呈现:流程布局中包含每张图片(以及视频静帧)的低分辨率缩略图,并在完整文件加载完成前持续显示。

完整的 customAssets 参考,请参阅自定义资源。

针对弱网环境的优化

对于网络连接持续较差的市场(农村地区、交通枢纽、受路由影响的区域):

  • 除首次请求外,将 fetchPolicy 设置为 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad。
  • 在 Adapty 看板中为每个版位配置备用付费墙。
  • 将 loadTimeout 设置为 3–5 秒,并在超时触发时接受备用付费墙。
  • 不要将流程显示与 GetProfile 绑定。独立调用 GetFlow,避免因用户画像加载缓慢而阻塞 UI。