Skip to content

Releases: adaptyteam/AdaptySDK-Unity

2.9.0

08 Jan 17:37
Compare
Choose a tag to compare

⚠️ Warning:
This version relies on StoreKit 2 instead of StoreKit 1. Starting from this version, you must connect your account to Apple In-App Purchase API in Adapty Dashboard. Otherwise, we won't be able to make or validate purchases.

New:

  • Since this version we are using CDN. This technology helps us to synchronize data much faster.
  • Added an option to retrieve paywalls from local cache by passing fetchPolicy parameter into .GetPaywall() method
  • Added an option to specify paywall fetching timeout by passing loadTimeout parameter into .GetPaywall() method

Read More in our documentation.

Breaking Changes:

  • placementId parameter has been added to the .GetPaywall method, replacing the previously unnamed parameter id. Read More
  • AdaptyEnableUsageLogs of Adapty-Info.plist is no longer supported, since this feature is enabled by default. Read More
  • If you will not put the AdaptyStoreKit2Usage parameter to Adapty-Info.plist, the default value will be .forIntroEligibilityCheck (this means that by default we will fetch introductory offers eligibility using StoreKit 2). Read More

2.7.1

01 Nov 10:48
Compare
Choose a tag to compare
  • Minor improvements for AdaptyUI support

2.7.0

13 Oct 20:44
Compare
Choose a tag to compare
  • [Android] Support for Google Billing Library v5+. Read more
  • [iOS] Since this version, the Adapty SDK will observe StoreKit 2 transactions, which will be helpful if you are using observer mode
  • The offerId property has been added to the AdaptyAccessLevel and AdaptySubscription entities in AdaptyProfile

⚠️ Breaking!

  • We have renamed AndroidSubscriptionUpdateProrationMode to AndroidSubscriptionUpdateReplacementMode
  • Introduced a new functionality for retrieving introductory offers eligibility using StoreKit 2. To fetch it, you should now use a separate method called .GetProductsIntroductoryOfferEligibility. The behavior of this function depends on your Adapty SDK configuration. It will utilize StoreKit 2 if available or fallback to a legacy logic based on receipt analysis. For more detailed information, please refer to our documentation. Read more
  • Adapty.Eligibility.Unknown was replaced with .NotApplicable (for products that cannot contain offers)
  • Adapty.PaywallProduct now has a unified structure for both systems
  • Introducing Adapty.Price structure. Migrate as follows:
    • product.Price -> product.Price.Amount
    • product.LocalizedPrice -> product.Price.LocalizedString
    • product.CurrencyCode -> product.price.CurrencyCode
    • product.CurrencySymbol -> product.Price.CurrencySymbol
  • Introducing AdaptySubscriptionDetails structure. Migrate as follows:
    • product.SubscriptionPeriod -> product.SubscriptionDetails.SubscriptionPeriod
    • product.LocalizedSubscriptionPeriod -> product.SubscriptionDetails.LocalizedSubscriptionPeriod
  • Introducing Adapty.SubscriptionPhase structure instead of Adapty.ProductDiscount. Phase represents either Introductory period (product.SubscriptionDetails.IntroductoryOffer) or Promo period (product.SubscriptionDetails.PromotionalOffer). Migrate as follows:
    • product.FreeTrialPeriod -> look into PaymentMode and SubscriptionPeriod properties of Adapty.SubscriptionPhase
    • product.LocalizedFreeTrialPeriod -> look into LocalizedSubscriptionPeriod property of Adapty.SubscriptionPhase
  • Other migration notes:
    • product.PromotionalOfferEligibility -> product.SubscriptionDetails.PromotionalOfferEligibility
    • product.PromotionalOfferId -> product.SubscriptionDetails.PromotionalOfferId
    • product.VariationId -> product.PaywallVariationId

Full Changelog: 2.4.4...2.7.0

2.4.2

27 Apr 09:37
Compare
Choose a tag to compare
  • [iOS] Improved variation_id delivery mechanism when validating purchases (iOS 2.4.4)
  • [iOS] Improved mechanism for Usage Logs collection (iOS 2.4.5)
  • [iOS] Fixed a bug which caused wrong error codes from StoreKit to be passed to the cross platform SDKs (iOS 2.4.5)

2.4.1

17 Apr 11:56
Compare
Choose a tag to compare
  • [iOS] Redesigned analytics event system
  • [iOS] Added an option to activate usage logs
  • isOneTime property of AdaptyProfile.NonSubscription was deprecated, use isConsumable instead

2.4.0

09 Mar 08:48
Compare
Choose a tag to compare
  • Changed the logic of working with fallback paywalls - now the SDK will not wait for the creation of a profile
  • Added an option to set airbridgeDeviceId to user profile
  • The logging system has been improved: all requests and responses from the server are now logged in verbose mode, and the computation required for logging has been optimized
  • Increased the length and number of custom attributes

2.3.0

24 Feb 13:39
Compare
Choose a tag to compare
  • Added an option to specify the paywall locale.
    ❗️Please note that you should enable this feature in the dashboard, in other case the SDK will not receive any values for remoteConfig
  • [iOS] updated dependency to 2.3.3
  • [Android] updated dependency to 2.3.2

2.2.2

09 Feb 09:49
Compare
Choose a tag to compare
  • [Android] fix PaywallProduct deserialization error

2.2.1

07 Feb 17:15
Compare
Choose a tag to compare
  • [iOS] Fixed a bug that caused a new anonymous user to be created when migrating from earlier versions of the SDK.

2.2.0

20 Jan 13:13
Compare
Choose a tag to compare

Meet the second version of the Adapty SDK 🎉

See our What's new in Adapty Unity SDK 2.0 doc for API updates.
Adapty 2.0 introduces the following updates:

Breaking changes:

  • User-initiated purchases are now automatically processed by the system, so we have removed the OnDeferredPurchasesProduct method from AdaptyEventListener.
  • We are no longer support Visual Paywalls and Promo Campaigns features, so you should remove the calls to the corresponding methods, if there were any
  • Instead of getting all paywalls in one request with the .GetPaywalls(), it must be done separately for each paywall using .GetPaywall(id:)
  • Products are no longer part of the paywall, they must be loaded separately with .GetPaywallProducts(paywall:)
  • It is no longer possible to use products outside of the paywall. If you need to handle a product, create a separate paywall for it (or for multiple products).
  • IntroductoryOfferEligibility – instead of true/false we give a more extended list of options
  • The Adapty.ProfileParameters.Builder is redesigned:
    • Methods, related to custom attributes now can throw an exception, if key or value didn't pass validation
    • Added an option to pass null values to builder functions for more convenience
    • You can now remove customAttributes with the function .RemoveCustomAttribute("key")
    • You have to use .Build() method and pass resulting Adapty.ProfileParameters object to .UpdateProfile method
  • .SetAnalyticsDisabled() method has been eliminated. Use the .SetAnalyticsDisabled method of Adapty.ProfileParameters.Builder.
  • The forceUpdate parameter was removed from the GetPaywall method. The result will always be up to date if it is possible to retrieve data from the server

Renames

  • PurchaserInfo renamed to AdaptyProfile
  • .GetPurchaserInfo renamed to .GetProfile
  • .OnReceiveUpdatedPurchaserInfo was also renamed to .OnLoadLatestProfile
  • DeveloperId field of AdaptyPaywall was renamed to Id
  • Adapty.AttributionNetwork renamed to Adapty.AttributionSource

Fixes

  • Fixed wrong behavior of fallback paywalls in some cases
  • .SetFallbackPaywalls() method now does not return errors related to StoreKit product retrieval
  • Incorrect user segmentation in some rare cases

Additions:

  • Ability to log onboard screens with .LogShowOnboarding(). Read more
  • Added ability to get previously set CustomAttributes, now it is part of Adapty.Profile

Under the hood:

  • The server interaction layer was rewritten from scratch.
  • The initial request sequence has been optimized and simplified
  • Reduced the number of API calls made by SDK. Some of the request are now faster and transfer less data.
  • Independent requests can be executed simultaneously
  • StoreKit interaction layer was refactored

Full documentation can be found in here.