Responder a acciones de flow - Unity
Si estás creando flows o paywalls con el Adapty Flow Builder o el Paywall Builder, es fundamental configurar los botones correctamente:
- Añade un botón en el builder y asígnale una acción ya existente o crea un ID de acción personalizado.
- Escribe código en tu app para gestionar cada acción que hayas asignado.
Esta guía muestra cómo gestionar acciones personalizadas y preexistentes en tu código.
Las compras y restauraciones se gestionan automáticamente. El resto de acciones de los botones, como cerrar flows o abrir enlaces, requieren una implementación correcta en el código de la app.
Configura el listener de eventos de flows
Para gestionar las acciones de los flows, implementa la interfaz IAdaptyFlowsEventsListener y regístrala con Adapty.SetFlowsEventsListener(). Esto debe hacerse al inicio del ciclo de vida de tu app, normalmente en la escena principal o en la inicialización de la app.
using AdaptySDK;
public class FlowsListener : MonoBehaviour, IAdaptyFlowsEventsListener
{
void Start()
{
Adapty.SetFlowsEventsListener(this);
}
// implement all IAdaptyFlowsEventsListener methods here
}IAdaptyFlowsEventsListener es una interfaz de C#, así que implementa todos sus métodos — consulta Gestionar eventos de flow y paywall para ver la lista completa. Los ejemplos a continuación muestran únicamente el método FlowViewDidPerformAction.
Todas las acciones de botones llegan al callback FlowViewDidPerformAction(view, action) como un objeto AdaptyUIUserAction con un Type de Close, SystemBack, OpenUrl o Custom, más un Value opcional (la URL o el ID de la acción personalizada).
Cerrar flows y paywalls
Para añadir un botón que cierre tu flow o paywall:
- En el builder, añade un botón y asígnale la acción Close.
- En el código de tu app, implementa un manejador para la acción
Closeque descarte el flow.
Una vista descartada se destruye y no puede volver a mostrarse. Para mostrar el flow de nuevo, llama otra vez a CreateFlowView.
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Manejar el botón de retroceso del sistema Android
Pulsar el botón de retroceso del sistema Android (o usar el gesto de retroceso) emite una acción del tipo SystemBack. Por sí sola no cierra el flow — el flow permanece abierto y el usuario lo abandona por el camino que tú definas, como un botón Close o una acción on_device_back en el builder. Si quieres que el botón de retroceso del sistema cierre el flow, gestiona la acción tú mismo:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
case AdaptyUIUserActionType.SystemBack:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Abrir URLs desde flows y paywalls
Si quieres añadir un grupo de enlaces (p. ej., términos de uso y restauración de compras), añade un elemento Link en el builder y trátalo igual que los botones con la acción Open URL.
Para añadir un botón que abra un enlace desde tu flow o paywall (p. ej., Terms of use o Privacy policy):
- En el builder, añade un botón, asígnale la acción Open URL e introduce la URL que quieres abrir.
- En el código de tu app, implementa un manejador para la acción
OpenUrlque abra la URL recibida.
Use el método AdaptyUI.OpenUrl para abrir la URL de forma nativa, respetando la opción de navegador externo o interno (action.OpenIn) configurada en el builder:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.OpenUrl:
var urlString = action.Value;
if (!string.IsNullOrWhiteSpace(urlString)) {
AdaptyUI.OpenUrl(
urlString,
action.OpenIn ?? AdaptyWebPresentation.ExternalBrowser,
(error) => {
// handle the error
}
);
}
break;
default:
// handle other events
break;
}
}Iniciar sesión en la app
Para añadir un botón que permita a los usuarios iniciar sesión en tu app:
- En el builder, añade un botón y asígnale la acción Custom con ID
login. - En el código de tu app, implementa un manejador para la acción personalizada
loginque identifique a tu usuario.
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "login") {
// Navigate to login scene
SceneManager.LoadScene("LoginScene");
}
break;
default:
// handle other events
break;
}
}Gestionar acciones personalizadas
Para añadir un botón que gestione cualquier otra acción:
- En el builder, añade un botón, asígnale la acción Custom y asígnale un ID.
- En el código de tu app, implementa un manejador para el ID de acción que has creado.
Por ejemplo, si tienes otro conjunto de ofertas de suscripción o compras únicas, puedes añadir un botón que muestre otro flow o paywall:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "openNewFlow") {
// Display another flow or paywall
ShowAlternativeFlow();
}
break;
default:
// handle other events
break;
}
}
private void ShowAlternativeFlow() {
// Implement your logic to show an alternative flow
}Si estás creando paywalls con el Paywall Builder de Adapty, es fundamental configurar los botones correctamente:
- Añade un botón en el paywall builder y asígnale una acción preexistente o crea un ID de acción personalizado.
- Escribe código en tu app para gestionar cada acción que hayas asignado.
Esta guía explica cómo gestionar acciones personalizadas y preexistentes en tu código.
Solo las compras y restauraciones se gestionan automáticamente. El resto de acciones de los botones, como cerrar paywalls o abrir enlaces, requieren implementar las respuestas correspondientes en el código de la app.
Cerrar paywalls
Para añadir un botón que cierre tu paywall:
- En el Paywall Builder, añade un botón y asígnale la acción Close.
- En el código de tu app, implementa un handler para la acción
closeque descarte el paywall.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Abrir URLs desde paywalls
Si quieres añadir un grupo de enlaces (p. ej., términos de uso y restauración de compras), añade un elemento Link en el Paywall Builder y gestíonalo igual que los botones con la acción Open URL.
Para añadir un botón que abra un enlace desde tu paywall (p. ej., Terms of use o Privacy policy):
- En el Paywall Builder, añade un botón, asígnale la acción Open URL e introduce la URL que quieres abrir.
- En el código de tu app, implementa un handler para la acción
openUrlque abra la URL recibida en un navegador.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.OpenUrl:
var urlString = action.Value;
if(!string.IsNullOrWhiteSpace(urlString)) {
Application.OpenURL(urlString);
}
break;
default:
// handle other events
break;
}
}Iniciar sesión en la app
Para añadir un botón que permita a los usuarios iniciar sesión en tu app:
- En el Paywall Builder, añade un botón y asígnale la acción Custom con el ID
login. - En el código de tu app, implementa un handler para la acción personalizada
loginque identifique a tu usuario.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "login") {
// Navigate to login scene
SceneManager.LoadScene("LoginScene");
}
break;
default:
// handle other events
break;
}
}Gestionar acciones personalizadas
Para añadir un botón que gestione cualquier otra acción:
- En el Paywall Builder, añade un botón, asígnale la acción Custom y asígnale un ID.
- En el código de tu app, implementa un handler para el ID de acción que hayas creado.
Por ejemplo, si tienes otro conjunto de ofertas de suscripción o compras únicas, puedes añadir un botón que muestre otro paywall:
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "openNewPaywall") {
// Display another paywall
ShowAlternativePaywall();
}
break;
default:
// handle other events
break;
}
}
private void ShowAlternativePaywall() {
// Implement your logic to show alternative paywall
}