Руководство по миграции на Flutter Adapty SDK 3.10.0

Adapty SDK 3.10.0 — это крупный релиз с рядом улучшений, которые могут потребовать миграции:

  1. Обновите метод makePurchase, чтобы использовать AdaptyPurchaseParameters вместо отдельных параметров.
  2. Замените vendorProductIds на productIdentifiers в модели AdaptyPaywall.

Обновление метода makePurchase

Метод makePurchase теперь принимает AdaptyPurchaseParameters вместо отдельных аргументов subscriptionUpdateParams и isOfferPersonalized. Это обеспечивает более строгую типизацию и упрощает добавление новых параметров покупки в будущем.

- final purchaseResult = await adapty.makePurchase(
-   product: product,
-   subscriptionUpdateParams: subscriptionUpdateParams,
-   isOfferPersonalized: true,
- );

+ final parameters = AdaptyPurchaseParametersBuilder()
+   ..setSubscriptionUpdateParams(subscriptionUpdateParams)
+   ..setIsOfferPersonalized(true)
+   ..setObfuscatedAccountId('your-account-id')
+   ..setObfuscatedProfileId('your-profile-id');

+ final purchaseResult = await adapty.makePurchase(
+   product: product,
+   parameters: parameters.build(),
+ );

Если дополнительные параметры не нужны, достаточно написать:

final purchaseResult = await adapty.makePurchase(
  product: product,
);

Обновление использования модели AdaptyPaywall

Свойство vendorProductIds устарело и заменено на productIdentifiers. Новое свойство возвращает объекты AdaptyProductIdentifier вместо обычных строк, что обеспечивает более структурированную информацию о продуктах.

- paywall.vendorProductIds.map((vendorId) => 
-   ListTextTile(title: vendorId)
- ).toList()

+ paywall.productIdentifiers.map((productId) => 
+   ListTextTile(title: productId.vendorProductId)
+ ).toList()

Объект AdaptyProductIdentifier предоставляет доступ к идентификатору продукта через свойство vendorProductId, сохраняя прежнюю функциональность и обеспечивая лучшую структуру для будущих улучшений.

Обратная совместимость

Оба изменения обратно совместимы:

  • Старые параметры в makePurchase устарели, но продолжают работать
  • Свойство vendorProductIds устарело, но по-прежнему доступно
  • Существующий код продолжит работать, однако будут отображаться предупреждения об устаревании

Рекомендуем перейти на новые API, чтобы обеспечить совместимость в будущем и воспользоваться преимуществами улучшенной типизации и расширяемости.