你可以通过运行一个含空白实验变体的 A/B 测试来衡量付费墙的实际效果。一个实验变体展示付费墙,另一个什么都不展示。你的应用从付费墙的远程配置中读取一个标志,以决定是否渲染付费墙。
工作原理
该方案在同一个版位中使用两个付费墙:
- 付费墙 A:你想要测试的付费墙,其远程配置中的
show_paywall 设置为 true。
- 付费墙 B:一个空付费墙,其远程配置中的
show_paywall 设置为 false。
当 getPaywall 返回一个付费墙时,你的应用会读取 show_paywall 标志。如果该标志为 true,应用就渲染付费墙;如果为 false,应用则跳过渲染,用户无需经过付费墙即可继续使用。
1. 在远程配置中添加 show_paywall 标志
你需要在同一个版位中配置两个付费墙:付费墙 A(你想测试的那个)和付费墙 B(一个空付费墙)。为每个付费墙添加一个 show_paywall 字段,这样你的应用就可以通过同一个键对两个实验变体分别做判断。
为付费墙 A 添加该标志的方法:
-
在 Adapty 主菜单中打开 Paywalls 部分,选择付费墙 A。
-
切换到 Remote config 标签页。
-
在 Table 视图中,点击 Add row,创建一个名称为 show_paywall、值为 true 的字段。在 JSON 视图中,该条目如下所示:
{
"show_paywall": true
}
-
保存更改。
对付费墙 B 重复相同步骤,但将 show_paywall 设置为 false。
有关远程配置的完整详情,请参阅使用远程配置设计付费墙。
在两个实验变体上都设置 show_paywall,可以让两组的代码路径保持一致,也方便后续添加更多实验变体。
2. 设置 A/B 测试
- 在版位上创建 A/B 测试,并将两个付费墙添加为实验变体。
- 设置实验变体权重,以便在看到付费墙和未看到付费墙的用户之间分配流量。
3. 在应用中检查标志
从 getPaywall 返回的付费墙远程配置中读取 show_paywall。如果该标志为 false,则跳过渲染,让用户继续操作。
do {
let paywall = try await Adapty.getPaywall(placementId: "YOUR_PLACEMENT_ID")
let showPaywall = paywall.remoteConfig?.dictionary?["show_paywall"] as? Bool ?? true
if showPaywall {
// Render the paywall
}
} catch {
// handle the error
}
Adapty.getPaywall("YOUR_PLACEMENT_ID") { result ->
when (result) {
is AdaptyResult.Success -> {
val paywall = result.value
val showPaywall = paywall.remoteConfig?.dataMap?.get("show_paywall") as? Boolean ?: true
if (showPaywall) {
// Render the paywall
}
}
is AdaptyResult.Error -> {
// handle the error
}
}
}
try {
const paywall = await adapty.getPaywall({ placementId: "YOUR_PLACEMENT_ID" });
const showPaywall = paywall.remoteConfig?.data?.["show_paywall"] ?? true;
if (showPaywall) {
// Render the paywall
}
} catch (error) {
// handle the error
}
try {
final paywall = await Adapty().getPaywall(id: "YOUR_PLACEMENT_ID");
final bool showPaywall = paywall.remoteConfig?.dictionary?['show_paywall'] as bool? ?? true;
if (showPaywall) {
// Render the paywall
}
} on AdaptyError catch (adaptyError) {
// handle the error
}
Adapty.GetPaywall("YOUR_PLACEMENT_ID", (paywall, error) => {
if (error != null) {
// handle the error
return;
}
var showPaywall = paywall.RemoteConfig?.Dictionary?["show_paywall"] as bool? ?? true;
if (showPaywall) {
// Render the paywall
}
});
Adapty.getPaywall(
placementId = "YOUR_PLACEMENT_ID"
).onSuccess { paywall ->
val showPaywall = paywall.remoteConfig?.dataMap?.get("show_paywall") as? Boolean ?: true
if (showPaywall) {
// Render the paywall
}
}.onError { error ->
// handle the error
}
try {
const paywall = await adapty.getPaywall({ placementId: 'YOUR_PLACEMENT_ID' });
const showPaywall = paywall.remoteConfig?.data?.['show_paywall'] ?? true;
if (showPaywall) {
// Render the paywall
}
} catch (error) {
// handle the error
}
当标志缺失时,默认值 true 会保持付费墙可见,因此未设置该标志的现有付费墙不受影响。
如果您自行渲染付费墙(未使用付费墙编辑工具),请在展示付费墙 A 时调用 logShowPaywall。否则,Adapty 无法在测试中统计付费墙的展示次数。付费墙 B 从未展示给用户,因此无需记录其展示事件。
下一步