- Support for Adapty iOS SDK 2.10.3
- Support for Adapty Android SDK 2.10.4
- The minimal iOS version is now 12.2.
- The minimal Xcode version is now 15.0.
- [iOS] We are no longer support
AdaptyStoreKit2Usage
parameter in the theAdapty-Info.plist
method. Adapty SDK now utilizes the StoreKit 2 method for introductory offer eligibility checks if available.
- [Android] Fixed the incorrect format of some analytics events in rare cases.
- Added support for AdaptyUI 2.1.x
- [iOS] Fixed an issue with wrong device name in some cases on MacOS.
- [iOS] Fixed support for Swift 5.7.x (Xcode 14.0 - 14.2)
- [iOS] Fixed an issue with repeated calls to the API when the device is offline
- [Android] Redesigned analytics event system
- [Android] Improved mechanism for usage logs collection
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 thegetPaywall
method, replacing the previously unnamed parameterid
. Read MoreAdaptyEnableUsageLogs
ofAdapty-Info.plist
is no longer supported, since this feature is enabled by default. Read More- If you will not put the
AdaptyStoreKit2Usage
parameter toAdapty-Info.plist
, the default value will be.forIntroEligibilityCheck
(this means that by default we will fetch introductory offers eligibility using StoreKit 2). Read More
- [Android] fixes for AdaptyUI library
- [iOS] Update Adapty-iOS dependency to 2.7.0
- [Android] Update Adapty-Android dependency to 2.7.0
- [Android] Updated retry logic according to new PBL error.
- [Android] Fixed error on purchase validation.
- [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.
- [iOS] 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
AdaptyPaywallProduct
now has a unified structure for both systems.
- [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.
- [iOS] 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
AdaptyPaywallProduct
now has a unified structure for both systems.
- Added
hasViewConfiguration
forAdaptyPaywall
object
- [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)
- Redesigned analytics event system
- Added an option to activate usage logs
isOneTime
property ofAdaptyProfile.NonSubscription
was deprecated, useisConsumable
instead
- [Android] fixed subscription change functionality
- 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
- [Android] updated dependency to 2.3.2
- Added an option to specify the paywall locale.
- [iOS] updated dependency to 2.3.3
- [Android] updated dependency to 2.3.1
- [iOS] Fixed a bug that caused a new anonymous user to be created when migrating from earlier versions of the SDK.
- [iOS] Fixed
didUpdateProfileStream
serialization bug.
- Added integration with Firebase and Google Analytics. Read more.
- [Android] Fixed a bug when products returned in a wrong order
- [iOS] Fixed a bug when some additional purchase parameters were not sent in Observer Mode.
- [Android] fixed parsing error for free trial fields.
- Updated errors documentation.
Meet the second version of the Adapty SDK 🎉
See our What's new in Adapty Flutter SDK 2.0 doc for API updates. Adapty 2.0 introduces the following updates:
- Adapty now is singleton. Use
Adapty().someMethodCall()
instead ofAdapty.someMethodCall()
- User-initiated purchases are now automatically processed by the system, so we have removed the
deferredPurchasesStream
andmakeDeferredPurchase()
method. - 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
AdaptyProfileParametersBuilder
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 resultingAdaptyProfileParameters
object to.updateProfile
method
.setAnalyticsDisabled()
method has been eliminated. Use the.setAnalyticsDisabled
method ofAdaptyProfileParametersBuilder
.- The
forceUpdate
parameter was removed from thegetPaywall
method. The result will always be up to date if it is possible to retrieve data from the server
PurchaserInfo
renamed toAdaptyProfile
.getPurchaserInfo
renamed to.getProfile
didReceivePurchaserInfoStream
was also renamed to.didUpdateProfileStream
developerId
field ofAdaptyPaywall
was renamed toid
AdaptyAttributionNetwork
renamed toAdaptyAttributionSource
- 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
- Ability to log onboard screens with
.logShowOnboarding()
. Read more - Added ability to get previously set
customAttributes
, now it is part ofAdaptyProfile
- 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.
- Fixed type cast in the
makeDeferredPurchase
method
- Upgraded with iOS SDK version 1.17.7 and Android SDK version 1.11.0
- [Android] fixed localized properties
- Support for Flutter 3.0
- Ability to use Adapty-Info.plist for storing initialization parameters
- Updated
PurchaserInfoModel
propertyprofileId
access level to public
- [iOS] Added support for disabling IDFA collection
- [Android] Improved handling clicks on push notifications
- [iOS] Added support for AdServices attribution tracking
- [Android] internal sdk improvements
- [Android] added logLevel ALL, logLevel VERBOSE doesn't include analytical logs, but ALL does
- changed example for updating custom attribution
- various improvements
- added toString for
AdaptyAccessLevelInfo
,AdaptySubscriptionInfo
,AdaptyNonSubscriptionInfo
models
- Added new log level "all"
- Fallback paywalls offline work
- [iOS] Added optional
offerId
parameter tomakePurchase
method
- [iOS] Updated AdaptyProfileParameterBuilder to work with ATTrackingManager.AuthorizationStatus
- Removed usage of dart ffi
- Made receipt validation api method private
- [Android] Added support for fallback paywalls
- Graduate package to a stable release. See pre-releases prior to this version for changelog entries.
- Enable null safety
- Require Dart 2.12 or greater.
- [Android] fixed localizedTitle in product
- [iOS] Added
isFamilyShareable
property to product for iOS 14+. - [iOS] Added
.presentCodeRedemptionSheet()
to public SDK API
- [Android] Small fix in requests
- [iOS] Added retry for
createProfile
request in case of poor connection or if server is down. - [Android] Added gzip support
- Removed unnecessary event channel invocations for
.getPaywalls()
and.getPurchaserInfo()
methods
- Fixed
.getPaywalls()
callback without an internet connection (Android only)
- Added
.setFacebookAnonymousId
method toAdaptyProfileParameterBuilder
- Added
freeTrialPeriod
property ofAdaptyProduct
model (Android only)
- Added ability to connect observer mode purchase with a paywall it was made from using
.setTransactionVariationId
method - Added ability to opt-out from external analytics services using
.setExternalAnalyticsEnabled
method - Added public
abTestName
andname
properties toAdaptyPaywall
and to nested products array. - Paywall views must be reported using
.logShowPaywall(paywall)
method from now on, otherwise, views will not be collected.
- Plugin initialization scheme changed to prevent missing transaction on iOS.
- Added
.logShowPaywall(paywall)
to manually record paywall show event. - Added
apnsTokenString
to public properties. - Removed
state
from.getPurchaserInfo()
callback. AddedforceUpdate
as an optional request parameter. - Removed
state
from.getPaywalls()
callback. AddedforceUpdate
as an optional request parameter.
- empty string custom payload fixed
updateAttribution()
fixed on AndroidgetPurchaserInfo()
stability improvedverbose logLevel
removed as default
customPayloadString
added to Paywall- birthday fix in
updateProfile
- Initial release