You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{"fileHash":"sha256:9337242a605613926644e5d1138edfb17d89d705ac5e9039578dba62fb7e3110","sections":{"preamble":{"contentHash":"sha256:bb48bd3f5f4015f0b40f9693b8bd9c061e5e204c789a29986a2daaf6b00ac9ba","proseHash":"sha256:bb48bd3f5f4015f0b40f9693b8bd9c061e5e204c789a29986a2daaf6b00ac9ba","translation":"---\ntitle: \"Añadir variantes de prueba A/B sin paywalls\"\ndescription: \"Ejecuta una prueba A/B donde una variante omite el paywall, usando una bandera de Remote Config para controlar si el paywall se muestra.\"\nmetadataTitle: \"Variantes de Prueba A/B Sin Paywalls | Documentación de Adapty\"\n---\n\nPuedes medir el impacto de tu paywall ejecutando una prueba A/B contra una variante vacía. Una variante muestra tu paywall; la otra no muestra nada. Tu app lee una bandera del Remote Config del paywall para decidir si renderizarlo.\n"},"h2-how-it-works":{"contentHash":"sha256:ad697c7e1b2b1f389c2305fe1ed7a69de4abcf9eedd1ab3ea220744620e4f3d8","proseHash":"sha256:ad697c7e1b2b1f389c2305fe1ed7a69de4abcf9eedd1ab3ea220744620e4f3d8","translation":"## Cómo funciona \\{#how-it-works\\}\n\nLa configuración usa dos paywalls en el mismo placement:\n\n- **Paywall A**: El paywall que quieres probar, con `show_paywall` establecido en `true` en su Remote Config.\n- **Paywall B**: Un paywall vacío con `show_paywall` establecido en `false` en su Remote Config.\n\nCuando `getPaywall` devuelve un paywall, tu app lee la bandera `show_paywall`. Si la bandera es `true`, la app renderiza el paywall. Si la bandera es `false`, la app omite el renderizado y el usuario continúa sin ver un paywall.\n"},"h2-1-add-the-showpaywall-flag-in-remote-config-pac8c4e1a":{"contentHash":"sha256:ac8c4e1ac2b00e24bdf4730a96bd2e36b1fd1acd3cba8cffe730bbf4997c78e5","proseHash":"sha256:ac8c4e1ac2b00e24bdf4730a96bd2e36b1fd1acd3cba8cffe730bbf4997c78e5","translation":"## 1. Añade el flag show_paywall en el Remote Config \\{#1-add-the-show_paywall-flag-in-remote-config\\}\n\nNecesitas dos flows o paywalls en el mismo placement: Flow/Paywall A (el que quieres probar) y Flow/Paywall B (uno vacío). Añade un campo `show_paywall` a cada uno para que tu app pueda ramificar en la misma clave para ambas variantes.\n\nPara añadir el flag al Flow/Paywall A:"},"h2-1-add-the-showpaywall-flag-in-remote-config-p6d35b38c":{"contentHash":"sha256:6d35b38c657d9794497494e671b7bbd28238b7815eb323771b4227304d9d5adc","proseHash":"sha256:6d35b38c657d9794497494e671b7bbd28238b7815eb323771b4227304d9d5adc","translation":"1. Abre la sección [**Flows**](https://app.adapty.io/flows)/[**Paywalls**](https://app.adapty.io/paywalls) en el menú principal de Adapty y selecciona el Flow/Paywall A.\n2. Abre la sección **Remote config**.\n3. Crea un campo con el nombre `show_paywall` y el valor `true`. En la vista **JSON**, la entrada queda así:\n\n ```json showLineNumbers\n {\n \"show_paywall\": true\n }\n ```\n\n4. Guarda los cambios.\n\nRepite los mismos pasos para el Flow/Paywall B, pero establece `show_paywall` en `false`."},"h2-1-add-the-showpaywall-flag-in-remote-config-p94b8397c":{"contentHash":"sha256:94b8397cac4a3a1856b5da737059636146861ed6f2bf2478e2eebbf8d750d8be","proseHash":"sha256:94b8397cac4a3a1856b5da737059636146861ed6f2bf2478e2eebbf8d750d8be","translation":"Para obtener todos los detalles sobre Remote Config, consulta [Personalizar el flow con Remote Config](customize-flow-with-remote-config) o [Diseñar el paywall con Remote Config](customize-paywall-with-remote-config).\n\n:::tip\nEstablecer `show_paywall` en ambas variantes mantiene la ruta de código idéntica para ambos grupos y facilita extender la prueba con más variantes más adelante.\n:::"},"h2-2-set-up-the-ab-test":{"contentHash":"sha256:aefb5388a04d7e87f17513577915a7d6ddea2249a297d8a4abfdd88f342ca8df","proseHash":"sha256:aefb5388a04d7e87f17513577915a7d6ddea2249a297d8a4abfdd88f342ca8df","translation":"## 2. Configura la prueba A/B \\{#2-set-up-the-ab-test\\}\n\n1. [Crea una prueba A/B](run_stop_ab_tests) en el placement y añade ambos paywalls como variantes.\n2. Establece los pesos de las variantes para distribuir el tráfico entre los usuarios que ven el paywall y los que no.\n"},"h2-3-check-the-flag-in-your-app-p7d166a34":{"contentHash":"sha256:7d166a34112be2ea2431ad83bdccc9869a9f251a206874c099c4053dde1c55cc","proseHash":"sha256:7d166a34112be2ea2431ad83bdccc9869a9f251a206874c099c4053dde1c55cc","translation":"## 3. Comprueba la flag en tu app \\{#3-check-the-flag-in-your-app\\}\n\nLee `show_paywall` desde el Remote Config devuelto por el SDK. Si la flag es `false`, omite el renderizado y deja que el usuario continúe.\n\n<Tabs groupId=\"current-os\" queryString>\n<TabItem value=\"swift\" label=\"iOS\" default>"},"h2-3-check-the-flag-in-your-app-p2ea1ded1":{"contentHash":"sha256:0478dbe7d6382264482b8ac1d55fc3fb6c847aba02f4b7b17889694260450b0c","proseHash":"sha256:2ea1ded1b263b9398a149fc57b9ed85dfabafee2230d87f8d287f135268428ad","translation":"```swift showLineNumbers\ndo {\n let flow = try await Adapty.getFlow(placementId: \"YOUR_PLACEMENT_ID\")\n let config = flow.remoteConfigs.first(where: { $0.locale == \"en\" })\n ?? flow.remoteConfigs.first\n let showPaywall = config?.dictionary?[\"show_paywall\"] as? Bool ?? true\n\n if showPaywall {\n // render the flow or paywall\n }\n} catch {\n // handle the error\n}\n```\n\n</TabItem>\n\n<TabItem value=\"kotlin\" label=\"Android\">"},"h2-3-check-the-flag-in-your-app-pdf5be7d3":{"contentHash":"sha256:a3fecbe3ee10750db1e7691123a9dcbecbed46ce15af8fe42f2ef518789e5a30","proseHash":"sha256:df5be7d344cb3e8597354b1d02dabb09b956cb318c61708c9a7c4eab76b07120","translation":"```kotlin showLineNumbers\nAdapty.getPaywall(\"YOUR_PLACEMENT_ID\") { result ->\n when (result) {\n is AdaptyResult.Success -> {\n val paywall = result.value\n val showPaywall = paywall.remoteConfig?.dataMap?.get(\"show_paywall\") as? Boolean ?: true\n\n if (showPaywall) {\n // Render the paywall\n }\n }\n is AdaptyResult.Error -> {\n // handle the error\n }\n }\n}\n```\n\n</TabItem>\n\n<TabItem value=\"react-native\" label=\"React Native\">"},"h2-3-check-the-flag-in-your-app-p36bf4654":{"contentHash":"sha256:00ecc0bb6d89f28d585ca38ae262a49ac3c9ec9d31b544afe395de21e13cd76e","proseHash":"sha256:36bf46547c820310aa3b085cb25cfea38caf771fde3db18a44e168bf13f41b78","translation":"```typescript showLineNumbers\ntry {\n const paywall = await adapty.getPaywall({ placementId: \"YOUR_PLACEMENT_ID\" });\n const showPaywall = paywall.remoteConfig?.data?.[\"show_paywall\"] ?? true;\n\n if (showPaywall) {\n // Render the paywall\n }\n} catch (error) {\n // handle the error\n}\n```\n\n</TabItem>\n\n<TabItem value=\"flutter\" label=\"Flutter\">"},"h2-3-check-the-flag-in-your-app-pbbfdb1b1":{"contentHash":"sha256:9364c9237fcf14dc2223f25dd522a33495cb22042eeace70a568121d74f959ca","proseHash":"sha256:bbfdb1b1c784bbacd28bb679911b51fa86f80005f133c16d1bdf54739e16b355","translation":"```dart showLineNumbers\ntry {\n final paywall = await Adapty().getPaywall(id: \"YOUR_PLACEMENT_ID\");\n final bool showPaywall = paywall.remoteConfig?.dictionary?['show_paywall'] as bool? ?? true;\n\n if (showPaywall) {\n // Render the paywall\n }\n} on AdaptyError catch (adaptyError) {\n // handle the error\n}\n```\n\n</TabItem>\n\n<TabItem value=\"unity\" label=\"Unity\">"},"h2-3-check-the-flag-in-your-app-p51d48a92":{"contentHash":"sha256:193f81913cd722184b550d6e30639ef9f19955db6b5be5817c7ccfc32a2ec096","proseHash":"sha256:51d48a92c5a292a24bf189cbacece2d417299da98a996080eff611edcdde56eb","translation":"```csharp showLineNumbers\nAdapty.GetPaywall(\"YOUR_PLACEMENT_ID\", (paywall, error) => {\n if (error != null) {\n // handle the error\n return;\n }\n\n var showPaywall = paywall.RemoteConfig?.Dictionary?[\"show_paywall\"] as bool? ?? true;\n\n if (showPaywall) {\n // Render the paywall\n }\n});\n```\n\n</TabItem>\n\n<TabItem value=\"kmp\" label=\"Kotlin Multiplatform\">"},"h2-3-check-the-flag-in-your-app-pb3aa9c83":{"contentHash":"sha256:222a97edc4b2dac39f273ddbbecb4cd36ed5c507ac0d07c88387738052f1f622","proseHash":"sha256:b3aa9c832037a10445b441497879bfc3a88cbd73694d1800d8e9cb6d918fdb4d","translation":"```kotlin showLineNumbers\nAdapty.getPaywall(\n placementId = \"YOUR_PLACEMENT_ID\"\n).onSuccess { paywall ->\n val showPaywall = paywall.remoteConfig?.dataMap?.get(\"show_paywall\") as? Boolean ?: true\n\n if (showPaywall) {\n // Render the paywall\n }\n}.onError { error ->\n // handle the error\n}\n```\n\n</TabItem>\n\n<TabItem value=\"capacitor\" label=\"Capacitor\">"},"h2-3-check-the-flag-in-your-app-pf45b5d45":{"contentHash":"sha256:ed9adc978fa972c172209e60c85d2b6fa570691f073ba51f93677023fcc5f1dd","proseHash":"sha256:f45b5d459003f5101850e4903e8460ecb56ea214070e802e8eb35df6e78fdbf1","translation":"```typescript showLineNumbers\nimport { adapty } from '@adapty/capacitor';\n\ntry {\n const paywall = await adapty.getPaywall({ placementId: 'YOUR_PLACEMENT_ID' });\n const showPaywall = paywall.remoteConfig?.data?.['show_paywall'] ?? true;\n\n if (showPaywall) {\n // Render the paywall\n }\n} catch (error) {\n // handle the error\n}\n```\n\n</TabItem>\n</Tabs>\n\nEl valor de respaldo `true` mantiene el flow/paywall visible cuando la bandera no existe, por lo que los flows/paywalls existentes que no incluyan la bandera no se ven afectados."},"h2-3-check-the-flag-in-your-app-p5272be6b":{"contentHash":"sha256:5272be6bbd287c130ebf1db5c1cbea5af6946f12c9d4668df02bcb1a37573f07","proseHash":"sha256:5272be6bbd287c130ebf1db5c1cbea5af6946f12c9d4668df02bcb1a37573f07","translation":":::important\nSi renderizas el paywall tú mismo (sin el [Flow Builder](adapty-flow-builder) ni el [Paywall Builder](adapty-paywall-builder)), llama a [`logShowFlow` (iOS SDK v4+) / `logShowPaywall`](present-remote-config-paywalls#track-paywall-view-events) cuando muestres el Flow/Paywall A. Sin esto, Adapty no puede contabilizar las visualizaciones en la prueba. No registres una visualización para el Flow/Paywall B, ya que nunca se muestra.\n:::"},"h2-next-steps":{"contentHash":"sha256:6535c8aff23e17cf18cd07852b3132f56acfd70253369c5fedb006827206a6a9","proseHash":"sha256:6535c8aff23e17cf18cd07852b3132f56acfd70253369c5fedb006827206a6a9","translation":"## Próximos pasos \\{#next-steps\\}\n\n- [Crear, ejecutar y detener una prueba A/B](run_stop_ab_tests) — Configura el test que incluye ambas variantes\n- [Resultados y métricas de la prueba A/B](results-and-metrics) — Compara la variante sin paywall con tu paywall"}}}
0 commit comments