Migrer le SDK Adapty React Native vers la v3.14

Le SDK Adapty React Native 3.14.0 est une version majeure qui introduit des améliorations nécessitant des étapes de migration de votre côté :

  • La méthode registerEventHandlers a été remplacée par la méthode setEventHandlers.
  • Dans AdaptyOnboardingView, les gestionnaires d’événements sont désormais passés en tant que props individuelles plutôt que sous forme d’objet eventHandlers
  • Un nouveau style d’import simplifié a été introduit pour les composants UI
  • La méthode logShowOnboarding a été supprimée
  • La version minimale de React Native a été mise à jour vers 0.73.0
  • Le style de présentation iOS par défaut pour les paywalls et les onboardings est passé de page sheet à plein écran

Remplacer registerEventHandlers par setEventHandlers

La méthode registerEventHandlers utilisée pour travailler avec Adapty Paywall et Onboarding Builder a été remplacée par la méthode setEventHandlers. Si vous utilisez l’Adapty Paywall Builder et/ou l’Adapty Onboarding Builder, trouvez registerEventHandlers dans le code de votre application et remplacez-le par setEventHandlers.

Ce changement a été introduit pour clarifier le comportement de la méthode : les gestionnaires fonctionnent désormais un à la fois car chacun retourne true/false, et avoir plusieurs gestionnaires pour un même événement rendait le comportement résultant peu clair.

Notez que lors de l’utilisation de composants React comme AdaptyOnboardingView ou AdaptyPaywallView, vous n’avez pas besoin de retourner true/false depuis les gestionnaires d’événements puisque vous contrôlez la visibilité du composant via votre propre gestion d’état. Les valeurs de retour ne sont nécessaires que pour la présentation d’écrans modaux où le SDK gère le cycle de vie de la vue.

Appeler setEventHandlers plusieurs fois remplacera les gestionnaires que vous fournissez, en écrasant à la fois les gestionnaires par défaut et ceux précédemment définis pour ces événements spécifiques.

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

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

Mettre à jour les chemins d’import pour les composants UI

Le SDK Adapty 3.14.0 introduit un style d’import simplifié pour les composants UI. Au lieu d’importer depuis react-native-adapty/dist/ui, vous pouvez désormais importer directement depuis react-native-adapty.

Le nouveau style d’import est plus cohérent avec les pratiques standard de React Native et rend les instructions d’import plus lisibles. Si vous utilisez des composants UI comme AdaptyPaywallView ou AdaptyOnboardingView, mettez à jour vos imports comme indiqué ci-dessous :

- 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';

Pour la compatibilité ascendante, l’ancien style d’import (react-native-adapty/dist/ui) est toujours pris en charge. Cependant, nous recommandons d’utiliser le nouveau style d’import pour plus de cohérence et de clarté.

Mettre à jour les gestionnaires d’événements d’onboarding dans le composant React

Les gestionnaires d’événements pour les onboardings ont été déplacés en dehors de l’objet eventHandlers dans AdaptyOnboardingView. Si vous affichez des onboardings avec AdaptyOnboardingView, mettez à jour la structure de gestion des événements.

Notez la façon dont nous recommandons d’implémenter les gestionnaires d’événements. Pour éviter de recréer des objets à chaque rendu, utilisez useCallback pour les fonctions qui gèrent les événements.

 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}
     />
   );
+ }

Pour la compatibilité ascendante, la prop eventHandlers est toujours prise en charge mais est dépréciée. Nous recommandons de migrer vers les props individuelles de gestionnaires d’événements comme indiqué ci-dessus.

Supprimer logShowOnboarding

Dans le SDK Adapty 3.14.0, nous avons supprimé la méthode logShowOnboarding du SDK. Si vous utilisiez cette méthode, elle ne sera plus disponible lorsque vous mettrez à jour le SDK vers la version 3.14 ou ultérieure.

À la place, vous pouvez créer des onboardings dans le builder d’onboarding no-code d’Adapty. Les analytics pour ces onboardings sont suivies automatiquement, et vous disposez de nombreuses options de personnalisation.

Mettre à jour React Native

À partir du SDK Adapty 3.14.0, la version minimale prise en charge de React Native est 0.73.0. Si vous utilisez une version antérieure, mettez à jour React Native vers la version 0.73.0 ou ultérieure afin que votre expérience avec le SDK Adapty soit cohérente et fiable.

Mettre à jour le style de présentation iOS pour les paywalls et onboardings modaux

Dans le SDK Adapty 3.14.0, le style de présentation iOS par défaut pour les paywalls et les onboardings affichés avec la méthode view.present() est passé de page sheet à plein écran.

Si vous souhaitez conserver l’ancien style de présentation en page sheet, passez le paramètre iosPresentationStyle à la méthode present() :

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