Migrar el SDK de Adapty React Native a v3.14

El SDK de Adapty React Native 3.14.0 es una versión mayor que introduce mejoras que requieren pasos de migración por tu parte:

  • El método registerEventHandlers ha sido reemplazado por el método setEventHandlers.
  • En AdaptyOnboardingView, los manejadores de eventos ahora se pasan como props individuales en lugar de un objeto eventHandlers
  • Se ha introducido un nuevo estilo de importación simplificado para los componentes de UI
  • El método logShowOnboarding ha sido eliminado
  • La versión mínima de React Native se ha actualizado a 0.73.0
  • El estilo de presentación por defecto en iOS para paywalls y onboardings ha cambiado de page sheet a pantalla completa

Reemplaza registerEventHandlers por setEventHandlers

El método registerEventHandlers, utilizado para trabajar con el Adapty Paywall Builder y el Adapty Onboarding Builder, ha sido reemplazado por el método setEventHandlers. Si usas el Adapty Paywall Builder y/o el Adapty Onboarding Builder, busca registerEventHandlers en el código de tu app y sustitúyelo por setEventHandlers.

Este cambio se ha introducido para que el comportamiento del método sea más claro: los handlers funcionan de uno en uno porque cada uno devuelve true/false, y tener múltiples handlers para un mismo evento hacía que el comportamiento resultante fuera difícil de predecir. Ten en cuenta que al usar componentes React como AdaptyOnboardingView o AdaptyPaywallView, no necesitas devolver true/false desde los manejadores de eventos, ya que controlas la visibilidad del componente mediante tu propio estado. Los valores de retorno solo son necesarios cuando se presenta una pantalla modal donde el SDK gestiona el ciclo de vida de la vista.

Llamar a setEventHandlers varias veces sobreescribirá los manejadores que hayas definido, reemplazando tanto los predeterminados como los configurados previamente para esos eventos específicos.

- const unsubscribe = view.registerEventHandlers({
-    // your event handlers
- })

 const unsubscribe = view.setEventHandlers({
    // your event handlers
 })

Actualiza las rutas de importación para componentes de UI

El SDK de Adapty 3.14.0 introduce un estilo de importación simplificado para los componentes de UI. En lugar de importar desde react-native-adapty/dist/ui, ahora puedes importar directamente desde react-native-adapty.

El nuevo estilo de importación es más coherente con las prácticas estándar de React Native y hace que las instrucciones de importación sean más limpias. Si utilizas componentes de UI como AdaptyPaywallView o AdaptyOnboardingView, actualiza tus importaciones como se muestra a continuación:

- import { AdaptyPaywallView } from 'react-native-adapty/dist/ui';
+ import { AdaptyPaywallView } from 'react-native-adapty';

- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';

- import { createPaywallView } from 'react-native-adapty/dist/ui';
+ import { createPaywallView } from 'react-native-adapty';

- import { createOnboardingView } from 'react-native-adapty/dist/ui';
+ import { createOnboardingView } from 'react-native-adapty';

Por compatibilidad con versiones anteriores, el antiguo estilo de importación (react-native-adapty/dist/ui) sigue siendo compatible. Sin embargo, recomendamos usar el nuevo estilo de importación para mayor coherencia y claridad.

Actualizar los manejadores de eventos del onboarding en el componente React

Los manejadores de eventos para onboardings se han movido fuera del objeto eventHandlers en AdaptyOnboardingView. Si estás mostrando onboardings con AdaptyOnboardingView, actualiza la estructura de manejo de eventos.

Presta atención a la forma en que recomendamos implementar los manejadores de eventos. Para evitar recrear objetos en cada renderizado, usa useCallback para las funciones que gestionan eventos.

 import React, { useCallback } from 'react';
- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';
+ import type { OnboardingEventHandlers } from 'react-native-adapty';
+
+ function MyOnboarding({ onboarding }) {
+   const onAnalytics = useCallback<OnboardingEventHandlers['onAnalytics']>((event, meta) => {}, []);
+   const onClose = useCallback<OnboardingEventHandlers['onClose']>((actionId, meta) => {}, []);
+   const onCustom = useCallback<OnboardingEventHandlers['onCustom']>((actionId, meta) => {}, []);
+   const onPaywall = useCallback<OnboardingEventHandlers['onPaywall']>((actionId, meta) => {}, []);
+   const onStateUpdated = useCallback<OnboardingEventHandlers['onStateUpdated']>((action, meta) => {}, []);
+   const onFinishedLoading = useCallback<OnboardingEventHandlers['onFinishedLoading']>((meta) => {}, []);
+   const onError = useCallback<OnboardingEventHandlers['onError']>((error) => {}, []);
+
   return (
     <AdaptyOnboardingView
       onboarding={onboarding}
       style={styles.container}
-       eventHandlers={{
-         onAnalytics(event, meta) { /* ... */ },
-         onClose(actionId, meta) { /* ... */ },
-         onCustom(actionId, meta) { /* ... */ },
-         onPaywall(actionId, meta) { /* ... */ },
-         onStateUpdated(action, meta) { /* ... */ },
-         onFinishedLoading(meta) { /* ... */ },
-         onError(error) { /* ... */ },
-       }}
+       onAnalytics={onAnalytics}
+       onClose={onClose}
+       onCustom={onCustom}
+       onPaywall={onPaywall}
+       onStateUpdated={onStateUpdated}
+       onFinishedLoading={onFinishedLoading}
+       onError={onError}
     />
   );
+ }

Por compatibilidad con versiones anteriores, la prop eventHandlers sigue siendo compatible, pero está obsoleta. Recomendamos migrar a las props de manejadores de eventos individuales tal como se muestra arriba.

Elimina logShowOnboarding

En el SDK de Adapty 3.14.0, hemos eliminado el método logShowOnboarding del SDK. Si has estado usando este método, no estará disponible cuando actualices el SDK a la versión 3.14 o posterior.

En su lugar, puedes crear onboardings en el constructor de onboardings sin código de Adapty. Las analíticas de estos onboardings se registran automáticamente y tienes muchas opciones de personalización.

Actualiza React Native

A partir del SDK de Adapty 3.14.0, la versión mínima compatible de React Native es 0.73.0. Si estás usando una versión anterior, actualiza React Native a la versión 0.73.0 o posterior para que tu experiencia con el SDK de Adapty sea consistente y fiable.

Actualiza el estilo de presentación de iOS para paywalls y onboardings modales

En el SDK de Adapty 3.14.0, el estilo de presentación predeterminado de iOS para paywalls y onboardings mostrados con el método view.present() ha cambiado de hoja de página a pantalla completa.

Si quieres mantener el estilo de presentación de hoja de página anterior, pasa el parámetro iosPresentationStyle al método present():

try {
  await view.present({ iosPresentationStyle: 'page_sheet' });
} catch (error) {
  // handle the error
}