Миграция Adapty Unity SDK на версию 3.14

Adapty SDK 3.14.0 — это мажорный релиз, который принёс ряд улучшений, требующих шагов по миграции:

  1. Отдельный слушатель событий для событий пейвола.
  2. Переименование AdaptyUI.CreateView в AdaptyUI.CreatePaywallView и связанных методов.
  3. Обновление метода MakePurchase для использования AdaptyPurchaseParameters вместо отдельных параметров.
  4. Замена SetFallbackPaywalls на метод SetFallback.
  5. Обновление доступа к свойствам пейвола с использованием AdaptyPlacement.
  6. Обновление доступа к Remote Config через объект AdaptyRemoteConfig.
  7. Замена VendorProductIds на ProductIdentifiers в модели AdaptyPaywall.
  8. Обновление политики загрузки в GetPaywall для использования AdaptyFetchPolicy.

Отдельный слушатель событий пейвола

Если вы показываете пейволы, созданные с помощью Paywall Builder, события представления пейвола теперь используют специальный интерфейс AdaptyPaywallsEventsListener и метод SetPaywallsEventsListener. Основной интерфейс AdaptyEventListener остаётся для обновлений профиля и данных об установке.

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
}

Подробнее об обработке событий пейвола.

Переименование методов создания и отображения представления

Методы создания и отображения представления были переименованы:

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

Аналогично был переименован метод закрытия:

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

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

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

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

Если дополнительные параметры не нужны, можно использовать упрощённый вариант:

using AdaptySDK;

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

Обновление метода для резервного пейвола

При обновлении до Unity SDK 3.14 необходимо скачать новые резервные файлы из дашборда Adapty и заменить ими существующие в вашем проекте.

Метод установки резервных пейволов был обновлён. Метод SetFallbackPaywalls переименован в SetFallback:

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

Финальный пример кода можно найти на странице Использование резервных пейволов в Unity.

Обновление доступа к свойствам пейвола

Следующие свойства перенесены из AdaptyPaywall в AdaptyPlacement:

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

Обновление доступа к Remote Config

Свойства Remote Config были реструктурированы в объект AdaptyRemoteConfig для лучшей организации:

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

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

Свойство VendorProductIds объявлено устаревшим в пользу ProductIdentifiers. Новое свойство возвращает объекты AdaptyProductIdentifier вместо простых строк, предоставляя более структурированную информацию о продуктах.

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
+  }
}

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

Обновление политики загрузки в GetPaywall

Тип параметра fetchPolicy в методе GetPaywall изменён с AdaptyPaywallFetchPolicy на AdaptyPlacementFetchPolicy. Это изменение унифицирует использование политики загрузки во всём SDK.

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