---
title: "Migrar el SDK de Adapty para Unity a la v. 3.14"
description: "Migra al SDK de Adapty para Unity v3.14 para mejorar el rendimiento y acceder a nuevas funciones de monetización."
---

El SDK de Adapty 3.14.0 es una versión mayor que incorpora mejoras que pueden requerir algunos pasos de migración:

1. Listener de eventos independiente para eventos de paywall.
2. Renombrar `AdaptyUI.CreateView` a `AdaptyUI.CreatePaywallView` y métodos relacionados.
3. Actualizar el método `MakePurchase` para usar `AdaptyPurchaseParameters` en lugar de parámetros individuales.
4. Reemplazar `SetFallbackPaywalls` por el método `SetFallback`.
5. Actualizar el acceso a propiedades del paywall para usar `AdaptyPlacement`.
6. Actualizar el acceso a la configuración remota usando el objeto `AdaptyRemoteConfig`.
7. Reemplazar `VendorProductIds` por `ProductIdentifiers` en el modelo `AdaptyPaywall`.
8. Actualizar la política de obtención en `GetPaywall` para usar `AdaptyFetchPolicy`.

## Listener de eventos independiente para eventos de paywall \{#separate-event-listener-for-paywall-events\}

Si muestras paywalls diseñados con el [Paywall Builder](adapty-paywall-builder), los eventos de la vista de paywall ahora usan la interfaz dedicada `AdaptyPaywallsEventsListener` y el método `SetPaywallsEventsListener`. La interfaz principal `AdaptyEventListener` sigue siendo la encargada de las actualizaciones de perfil y los detalles de instalación.

```diff showLineNumbers
using UnityEngine;
using AdaptySDK;

public class AdaptyListener : MonoBehaviour, 
-    AdaptyEventListener {
+    AdaptyEventListener,
+    AdaptyPaywallsEventsListener {
    
    void Start() {
        Adapty.SetEventListener(this);
+       Adapty.SetPaywallsEventsListener(this);
    }
    
    // AdaptyEventListener methods
    public void OnLoadLatestProfile(AdaptyProfile profile) { }
    public void OnInstallationDetailsSuccess(AdaptyInstallationDetails details) { }
    public void OnInstallationDetailsFail(AdaptyError error) { }
    
+   // AdaptyPaywallsEventsListener methods
+   // Implement paywall event handlers here
}
```

[Más información sobre cómo gestionar eventos de paywall](unity-handling-events).

## Renombrar los métodos de creación y presentación de vistas \{#rename-view-creation-and-presentation-methods\}

Los métodos de creación y presentación de vistas han sido renombrados:

```diff showLineNumbers
using AdaptySDK;

- AdaptyUI.CreateView(paywall, parameters, (view, error) => {
+ AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
    if (error != null) {
      // handle the error
      return;
    }

-   AdaptyUI.PresentView(view, (error) => {
+   AdaptyUI.PresentPaywallView(view, (error) => {
      // handle the error
    });
  });
}
```

Del mismo modo, el método de cierre ha sido renombrado:

```diff showLineNumbers
- AdaptyUI.DismissView(view, (error) => {
+ AdaptyUI.DismissPaywallView(view, (error) => {
    // handle the error
  });
```

## Actualizar el método MakePurchase \{#update-makepurchase-method\}

El método `MakePurchase` ahora usa `AdaptyPurchaseParameters` en lugar de los argumentos individuales `subscriptionUpdateParams` e `isOfferPersonalized`. Esto mejora la seguridad de tipos y permite ampliar los parámetros de compra en el futuro.

```diff showLineNumbers
using AdaptySDK;

void MakePurchase(
  AdaptyPaywallProduct product,
  AdaptySubscriptionUpdateParameters subscriptionUpdate,
  bool? isOfferPersonalized
) {
-  Adapty.MakePurchase(product, subscriptionUpdate, isOfferPersonalized, (result, error) => {
+  var parameters = new AdaptyPurchaseParametersBuilder()
+    .SetSubscriptionUpdateParams(subscriptionUpdate)
+    .SetIsOfferPersonalized(isOfferPersonalized)
+    .Build();
+
+  Adapty.MakePurchase(product, parameters, (result, error) => {
    switch (result.Type) {
      case AdaptyPurchaseResultType.Pending:
        // handle pending purchase
        break;
      case AdaptyPurchaseResultType.UserCancelled:
        // handle purchase cancellation
        break;
      case AdaptyPurchaseResultType.Success:
        var profile = result.Profile;
        // handle successful purchase
        break;
      default:
        break;
    }
  });
}
```

Si no necesitas parámetros adicionales, puedes usar simplemente:

```csharp showLineNumbers
using AdaptySDK;

void MakePurchase(AdaptyPaywallProduct product) {
  Adapty.MakePurchase(product, (result, error) => {
    // handle purchase result
  });
}
```

## Actualizar el método de respaldo \{#update-fallback-method\}

:::important
Al actualizar al SDK de Unity 3.14, deberás descargar los nuevos archivos de respaldo desde el Adapty Dashboard y reemplazar los existentes en tu proyecto.
:::

El método para configurar los paywall de respaldo ha sido actualizado. El método `SetFallbackPaywalls` ha sido renombrado a `SetFallback`:

```diff showLineNumbers
using AdaptySDK;

void SetFallBackPaywalls() {
  #if UNITY_IOS
    var assetId = "adapty_fallback_ios.json";
  #elif UNITY_ANDROID
    var assetId = "adapty_fallback_android.json";
  #else
    var assetId = "";
  #endif

-  Adapty.SetFallbackPaywalls(assetId, (error) => {
+  Adapty.SetFallback(assetId, (error) => {
    // handle the error
  });
}
```

Consulta el ejemplo de código final en la página [Usar paywalls de respaldo en Unity](unity-use-fallback-paywalls).

## Actualizar el acceso a propiedades del paywall \{#update-paywall-property-access\}

Las siguientes propiedades se han movido de `AdaptyPaywall` a `AdaptyPlacement`:

```diff showLineNumbers
using AdaptySDK;

void ProcessPaywall(AdaptyPaywall paywall) {
-  var abTestName = paywall.ABTestName;
-  var audienceName = paywall.AudienceName;
-  var revision = paywall.Revision;
-  var placementId = paywall.PlacementId;

+  var abTestName = paywall.Placement.ABTestName;
+  var audienceName = paywall.Placement.AudienceName;
+  var revision = paywall.Placement.Revision;
+  var placementId = paywall.Placement.Id;
}
```

## Actualizar el acceso a la configuración remota \{#update-remote-config-access\}

Las propiedades de Remote Config se han reestructurado en un objeto `AdaptyRemoteConfig` para una mejor organización:

```diff showLineNumbers
using AdaptySDK;

void ProcessRemoteConfig(AdaptyPaywall paywall) {
-  var remoteConfigString = paywall.RemoteConfigString;
-  var locale = paywall.Locale;
-  var remoteConfigDict = paywall.RemoteConfig;

+  var remoteConfigString = paywall.RemoteConfig.Data;
+  var locale = paywall.RemoteConfig.Locale;
+  var remoteConfigDict = paywall.RemoteConfig.Dictionary;
}
```

## Actualizar el uso del modelo AdaptyPaywall \{#update-adaptyPaywall-model-usage\}

La propiedad `VendorProductIds` ha quedado obsoleta en favor de `ProductIdentifiers`. La nueva propiedad devuelve objetos `AdaptyProductIdentifier` en lugar de cadenas simples, lo que proporciona información de producto más estructurada.

```diff showLineNumbers
using AdaptySDK;

void ProcessPaywallProducts(AdaptyPaywall paywall) {
-  var productIds = paywall.VendorProductIds;
-  foreach (var vendorId in productIds) {
-    // use vendorId
-  }

+  var productIdentifiers = paywall.ProductIdentifiers;
+  foreach (var productId in productIdentifiers) {
+    var vendorId = productId.VendorProductId;
+    // use vendorId
+  }
}
```

El objeto `AdaptyProductIdentifier` da acceso al ID del producto del proveedor a través de la propiedad `VendorProductId`, manteniendo la misma funcionalidad y ofreciendo una mejor estructura para futuras mejoras.

## Actualizar la política de obtención en GetPaywall \{#update-getpaywall-fetch-policy\}

El tipo del parámetro `fetchPolicy` en el método `GetPaywall` ha cambiado de `AdaptyPaywallFetchPolicy` a `AdaptyPlacementFetchPolicy`. Este cambio unifica el uso de la política de obtención en todo el SDK.

```diff showLineNumbers
using AdaptySDK;

void GetPaywall(string placementId) {
-  Adapty.GetPaywall(placementId, AdaptyPaywallFetchPolicy.ReloadRevalidatingCacheData, null, (paywall, error) => {
+  Adapty.GetPaywall(placementId, AdaptyPlacementFetchPolicy.ReloadRevalidatingCacheData, null, (paywall, error) => {
    // handle the result
  });
}
```