将 Adapty Unity SDK 迁移到 v. 3.14

Adapty SDK 3.14.0 是一个重大版本更新,带来了一些改进,但可能需要您执行以下迁移步骤:

  1. 为付费墙事件单独设置事件监听器。
  2. AdaptyUI.CreateView 重命名为 AdaptyUI.CreatePaywallView 及相关方法。
  3. 更新 MakePurchase 方法,使用 AdaptyPurchaseParameters 替代单独的参数。
  4. SetFallbackPaywalls 替换为 SetFallback 方法。
  5. 更新付费墙属性访问方式,使用 AdaptyPlacement
  6. 更新远程配置访问方式,使用 AdaptyRemoteConfig 对象。
  7. AdaptyPaywall 模型中,将 VendorProductIds 替换为 ProductIdentifiers
  8. 更新 GetPaywall 获取策略,使用 AdaptyFetchPolicy

为付费墙事件单独设置事件监听器

如果您展示使用付费墙编辑工具设计的付费墙,付费墙视图事件现在使用专用的 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 替代单独的 subscriptionUpdateParamsisOfferPersonalized 参数。这提供了更好的类型安全性,并允许未来扩展购买参数。

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

更新远程配置访问方式

远程配置属性已被重构为 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 属性提供对供应商产品 ID 的访问,在保持相同功能的同时,为未来的增强提供了更好的结构。

更新 GetPaywall 获取策略

GetPaywall 方法中的 fetchPolicy 参数类型已从 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
  });
}