purchases-ios

In-app purchases and subscriptions made easy. Support for iOS, watchOS, tvOS, macOS, and visionOS.

MIT License

Stars
2.1K
Committers
65

Bot releases are hidden (Show)

purchases-ios - 4.32.1

Published by NachoSoto 9 months ago

RevenueCatUI

  • PaywallViewController: new initializer with Offering identifier (#3587) via NachoSoto (@NachoSoto)
  • Paywalls: improve template 5 layout for long product names (#3589) via NachoSoto (@NachoSoto)

Other Changes

  • Paywalls: extracted PaywallViewConfiguration (#3586) via NachoSoto (@NachoSoto)
  • CircleCI: avoid installing Xcodes when not needed (#3585) via NachoSoto (@NachoSoto)
  • CircleCI: change all jobs to M1 (#3140) via NachoSoto (@NachoSoto)
purchases-ios - 3.14.3

Published by aboedo almost 2 years ago

purchases-ios - 4.13.4

Published by revenuecat-ops almost 2 years ago

Bugfixes

  • Fixed Xcode 13.2.x / Swift 5.5 compatibility (#1994) via NachoSoto (@NachoSoto)

Other Changes

  • Update fastlane (#1998) via NachoSoto (@NachoSoto)
  • Documentation: fixed missing docs from inherited symbols (#1997) via NachoSoto (@NachoSoto)
  • CI: added job to test compilation with Xcode 13.2.1 / Swift 5.5 (#1990) via NachoSoto (@NachoSoto)
  • Extracted TrialOrIntroPriceEligibilityCheckerType (#1983) via NachoSoto (@NachoSoto)
  • CI: removed redundant swiftlint installation (#1993) via NachoSoto (@NachoSoto)
  • Nimble: use a fixed version (#1991) via NachoSoto (@NachoSoto)
  • Update fastlane-plugin-revenuecat_internal (#1989) via Cesar de la Vega (@vegaro)
  • Purchases.logIn: log warning if attempting to use a static appUserID (#1958) via NachoSoto (@NachoSoto)
  • Created InternalAPI for "health" request (#1971) via NachoSoto (@NachoSoto)
purchases-ios - 4.13.3

Published by revenuecat-ops almost 2 years ago

Other Changes

  • TrialOrIntroPriceEligibilityChecker: only use SK2 implementation if enabled (#1984) via NachoSoto (@NachoSoto)
purchases-ios - 4.13.2

Published by revenuecat-ops about 2 years ago

Bugfixes

  • Purchasing: fixed consumable purchases by fixing transaction-finishing (#1965) via NachoSoto (@NachoSoto)
  • ErrorUtils: improved logging and localizedDescription to include underlying errors (#1974) via NachoSoto (@NachoSoto)
  • PaymentQueueWrapper: also implement shouldShowPriceConsent (#1963) via NachoSoto (@NachoSoto)
  • ReceiptFetcher: added retry mechanism (#1945) via NachoSoto (@NachoSoto)
  • PaymentQueueWrapper: also conform to SKPaymentTransactionObserver to fix promoted purchases (#1962) via NachoSoto (@NachoSoto)

Other Changes

  • Updating great support link via Miguel José Carranza Guisado (@MiguelCarranza)
  • OfferingsManager: added ability to fail if any product is not found (#1976) via NachoSoto (@NachoSoto)
  • OfferingsManager: added missing test for ignoring missing products (#1975) via NachoSoto (@NachoSoto)
  • PaymentQueueWrapper: improved abstraction for active SKPaymentQueue wrapper (#1968) via NachoSoto (@NachoSoto)
  • ErrorUtils.purchasesError(withUntypedError:) handle PurchasesErrorConvertible (#1973) via NachoSoto (@NachoSoto)
  • Renamed CallbackCache.add(callback:) (#1970) via NachoSoto (@NachoSoto)
  • Fixed iOS 12/13 test snapshots (#1972) via NachoSoto (@NachoSoto)
  • Moved SKPaymentQueue.presentCodeRedemptionSheet to StoreKitWorkarounds (#1967) via NachoSoto (@NachoSoto)
  • Async.call method to convert completion-block call to async (#1969) via NachoSoto (@NachoSoto)
  • Remind about updating docs and parity spreadsheet on minor releases (#1955) via Cesar de la Vega (@vegaro)
  • PostReceiptDataOperation: added initiationSource parameter (#1957) via NachoSoto (@NachoSoto)
  • StoreKit1Wrapper: separated SKPaymentTransactionObserver and SKPaymentQueueDelegate implementations (#1961) via NachoSoto (@NachoSoto)
  • Refactored Error.isCancelledError into Error+Extensions (#1960) via NachoSoto (@NachoSoto)
  • Update fastlane plugin (#1959) via Cesar de la Vega (@vegaro)
  • Integration Tests: simplified testIneligibleForIntroAfterPurchaseExpires to fix flakiness (#1952) via NachoSoto (@NachoSoto)
  • fix typo in comment (#1956) via Andy Boedo (@aboedo)
purchases-ios - 4.13.1

Published by revenuecat-ops about 2 years ago

Note:

⚠️ ⚠️ This version does not support promoted purchases initiated directly from the App Store when StoreKit 2 is enabled. we’re working on a hotfix to address this). In the meantime, you can stick with 4.11.0 if you’re using promoted purchases.

Other Changes

  • ProductsFetcherSK2: removed now redundant caching logic (#1908) via NachoSoto (@NachoSoto)
  • Created CachingProductsManager to provide consistent caching logic when fetching products (#1907) via NachoSoto (@NachoSoto)
  • Refactored ReceiptFetcher.receiptData (#1941) via NachoSoto (@NachoSoto)
  • Abstracted conversion from async to completion-block APIs (#1943) via NachoSoto (@NachoSoto)
  • Moved InAppPurchase into AppleReceipt (#1942) via NachoSoto (@NachoSoto)
  • Purchases+async: combined @available statements into a single one (#1944) via NachoSoto (@NachoSoto)
  • Integration Tests: don't initialize Purchases until the SKTestSession has been re-created (#1946) via NachoSoto (@NachoSoto)
  • PostReceiptDataOperation: print receipt data if debug logs are enabled (#1940) via NachoSoto (@NachoSoto)
purchases-ios - 4.13.0

Published by revenuecat-ops about 2 years ago

Note:

⚠️ ⚠️ This version does not support promoted purchases initiated directly from the App Store when StoreKit 2 is enabled. we’re working on a hotfix to address this). In the meantime, you can stick with 4.11.0 if you’re using promoted purchases.

New Features

  • 🚨 StoreKit 2 is now enabled by default 🚨 (#1922) via NachoSoto (@NachoSoto)
  • Extracted PurchasesType and PurchasesSwiftType (#1912) via NachoSoto (@NachoSoto)

Bugfixes

  • StoreKit 1: changed result of cancelled purchases to be consistent with StoreKit 2 (#1910) via NachoSoto (@NachoSoto)
  • PaymentQueueWrapper: handle promotional purchase requests from App Store when SK1 is disabled (#1901) via NachoSoto (@NachoSoto)

Other Changes

  • Fixed iOS 12 tests (#1936) via NachoSoto (@NachoSoto)
  • CacheableNetworkOperation: fixed race condition in new test (#1932) via NachoSoto (@NachoSoto)
  • BasePurchasesTests: changed default back to SK1 (#1935) via NachoSoto (@NachoSoto)
  • Logger: refactored default LogLevel definition (#1934) via NachoSoto (@NachoSoto)
  • AppleReceipt: refactored declarations into nested types (#1933) via NachoSoto (@NachoSoto)
  • Integration Tests: relaunch tests when retrying failures (#1925) via NachoSoto (@NachoSoto)
  • CircleCI: downgraded release jobs to Xcode 13.x (#1927) via NachoSoto (@NachoSoto)
  • ErrorUtils: added test to verify that PublicErrors can be catch'd as ErrorCode (#1924) via NachoSoto (@NachoSoto)
  • StoreKitIntegrationTests: print AppleReceipt data whenever verifyEntitlementWentThrough fails (#1929) via NachoSoto (@NachoSoto)
  • OperationQueue: log debug message when requests are found in cache and skipped (#1926) via NachoSoto (@NachoSoto)
  • GetCustomerInfoAPI: avoid making a request if there's any PostReceiptDataOperation in progress (#1911) via NachoSoto (@NachoSoto)
  • PurchaseTester: allow HTTP requests and enable setting ProxyURL (#1917) via NachoSoto (@NachoSoto)
purchases-ios - 4.12.1

Published by revenuecat-ops about 2 years ago

Note:

⚠️ ⚠️ This version does not support promoted purchases initiated directly from the App Store when StoreKit 2 is enabled. we’re working on a hotfix to address this). In the meantime, you can stick with 4.11.0 if you’re using promoted purchases.

Bugfixes

  • Purchases.beginRefundRequest: ensured errors are PublicError (#1913) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: fixed macOS target (#1915) via NachoSoto (@NachoSoto)

Other Changes

  • Fixed tvOS tests (#1928) via NachoSoto (@NachoSoto)
  • SnapshotTesting: require version 1.9.0 to keep supporting iOS 12/13 tests (#1931) via NachoSoto (@NachoSoto)
  • pre-commit hook: also verify leftover API keys in PurchaseTester (#1914) via NachoSoto (@NachoSoto)
  • CircleCI: changed iOS 12/13 to use Xcode 13 (#1918) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: removed unnecessary UIApplicationDelegate (#1916) via NachoSoto (@NachoSoto)
  • CircleCI: changed all jobs to use Xcode 14 (#1909) via NachoSoto (@NachoSoto)
  • Atomic: added unit test to verify value's setter (#1905) via NachoSoto (@NachoSoto)
  • spm build CI job: changed to release build (#1903) via NachoSoto (@NachoSoto)
  • StoreKitUnitTests: compile on iOS 11.0+ (#1904) via NachoSoto (@NachoSoto)
  • Purchases: only expose testing data on DEBUG (#1902) via NachoSoto (@NachoSoto)
  • Integration Tests: added test to verify re-subscription behavior (#1898) via NachoSoto (@NachoSoto)
  • IntegrationTests: simplified testExpireSubscription to fix flaky test (#1899) via NachoSoto (@NachoSoto)
  • Integration Tests: actually verify that entitlement is active (#1880) via NachoSoto (@NachoSoto)
purchases-ios - 4.12.0

Published by revenuecat-ops about 2 years ago

Note:

⚠️ ⚠️ This version does not support promoted purchases initiated directly from the App Store when StoreKit 2 is enabled. we’re working on a hotfix to address this). In the meantime, you can stick with 4.11.0 if you’re using promoted purchases.

Bugfixes

  • watchOS: fixed crash when ran on single-target apps with Xcode 14 and before watchOS 9.0 (#1895) via NachoSoto (@NachoSoto)
  • CustomerInfoManager/OfferingsManager: improved display of underlying errors (#1888) via NachoSoto (@NachoSoto)
  • Offering: improved confusing log for PackageType.custom (#1884) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator: don't log warning if allowSharingAppStoreAccount setting was never explicitly set (#1885) via NachoSoto (@NachoSoto)
  • Introduced type-safe PurchasesError and fixed some incorrect returned error types (#1879) via NachoSoto (@NachoSoto)
  • CustomerInfoManager: fixed thread-unsafe implementation (#1878) via NachoSoto (@NachoSoto)

New Features

  • Disable SK1's StoreKitWrapper if SK2 is enabled and available (#1882) via NachoSoto (@NachoSoto)
  • Sendable support (#1795) via NachoSoto (@NachoSoto)

Other Changes

  • Renamed StoreKitWrapper to StoreKit1Wrapper (#1886) via NachoSoto (@NachoSoto)
  • Enabled DEAD_CODE_STRIPPING (#1887) via NachoSoto (@NachoSoto)
  • HTTPClient: added X-Client-Bundle-ID and logged on SDK initialization (#1883) via NachoSoto (@NachoSoto)
  • add link to SDK reference (#1872) via Andy Boedo (@aboedo)
  • Added StoreKit2Setting.shouldOnlyUseStoreKit2 (#1881) via NachoSoto (@NachoSoto)
  • Introduced TestLogHandler to simplify how we test logged messages (#1858) via NachoSoto (@NachoSoto)
  • Integration Tests: added test for purchasing StoreProduct instead of Package (#1875) via NachoSoto (@NachoSoto)
  • ErrorUtils: added test to verify that returned errors can be converted to ErrorCode (#1871) via NachoSoto (@NachoSoto)
purchases-ios - 4.11.0

Published by revenuecat-ops about 2 years ago

Bugfixes

  • Fixed crash on async SK1 cancelled purchase (#1869) via NachoSoto (@NachoSoto)

New Features

  • Added beginRefundRequest overload with completion block (#1861) via NachoSoto (@NachoSoto)

Other Changes

  • Skip release if needed and adds automatic release to PR title and body (#1870) via Cesar de la Vega (@vegaro)
purchases-ios - 4.10.3

Published by revenuecat-ops about 2 years ago

Bugfixes

  • TrialOrIntroPriceEligibilityChecker: return .noIntroOfferExists if the product has no introductory offer (#1859) via NachoSoto (@NachoSoto)
  • watchOS: fixed crash on single-target apps (#1849) via NachoSoto (@NachoSoto)

Other Changes

  • Update fastlane-plugin-revenuecat_internal and fix release-train job (#1866) via Cesar de la Vega (@vegaro)
  • fix typo in comment (#1863) via Andy Boedo (@aboedo)
  • Use Dangerfile repository (#1864) via Cesar de la Vega (@vegaro)
  • CircleCI: added job for building SDK with SPM (#1860) via NachoSoto (@NachoSoto)
  • Lock: changed default implementation to use NSLock (#1819) via NachoSoto (@NachoSoto)
  • Offering/StoreProductType: Sendable conformance (#1826) via NachoSoto (@NachoSoto)
  • ReceiptParser: Sendable conformance (#1825) via NachoSoto (@NachoSoto)
  • CustomerInfo: Sendable conformance (#1824) via NachoSoto (@NachoSoto)
  • Added Collection.onlyElement (#1857) via NachoSoto (@NachoSoto)
  • README updates (#1856) via rglanz-rc (@rglanz-rc)
  • IntegrationTests: actually fail test if tests aren't configured (#1855) via NachoSoto (@NachoSoto)
  • Configuration.with(usesStoreKit2IfAvailable:): removed "experimental" warning (#1845) via NachoSoto (@NachoSoto)
  • Build fix- Update package requirements for MagicWeather (#1852) via Joshua Liebowitz (@taquitos)
  • Fastfile: test_tvos lane had duplicate parameter (#1846) via NachoSoto (@NachoSoto)
purchases-ios - 4.10.2

Published by revenuecat-ops about 2 years ago

Bugfixes

  • ErrorResponse: don't add attribute errors to message if empty (#1844) via NachoSoto (@NachoSoto)
  • Purchase cancellations: unify behavior between SK1 and SK2 (#1841) via NachoSoto (@NachoSoto)
  • StoreKit 2: PurchasesOrchestrator: don't log "purchased product" if it was cancelled (#1840) via NachoSoto (@NachoSoto)
  • Backend: fixed potential race conditions introduced by OperationDispatcher.dispatchOnWorkerThread(withRandomDelay:) (#1827) via NachoSoto (@NachoSoto)
  • DeviceCache: Sendable conformance and fixed thread-safety (#1823) via NachoSoto (@NachoSoto)
  • Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) (#1828) via Josh Holtz (@joshdholtz)
  • SystemInfo.finishTransactions: made thread-safe (#1807) via NachoSoto (@NachoSoto)
  • Purchases.shared and Purchases.isConfigured are now thread-safe (#1813) via NachoSoto (@NachoSoto)
  • PriceFormatterProvider: Sendable conformance and fixed thread-safety (#1818) via NachoSoto (@NachoSoto)
  • StoreKitConfigTestCase.changeStorefront: re-enabled on iOS 16 (#1811) via NachoSoto (@NachoSoto)

Other Changes

  • DeviceCache: no longer set cache timestamp before beginning request (#1839) via NachoSoto (@NachoSoto)
  • MagicWeatherSwiftUI: updated to use async APIs (#1843) via NachoSoto (@NachoSoto)
  • Release train (#1842) via Cesar de la Vega (@vegaro)
  • Adds hotfixes section to RELEASING doc (#1837) via Cesar de la Vega (@vegaro)
  • Update fastlane plugin (#1838) via Toni Rico (@tonidero)
  • Update migration doc from didReceiveUpdatedCustomerInfo to receivedUpdatedCustomerInfo (#1836) via Josh Holtz (@joshdholtz)
  • PurchasesDelegate: added test for latest cached customer info always being sent (#1830) via NachoSoto (@NachoSoto)
  • CallbackCache: Sendable conformance (#1835) via NachoSoto (@NachoSoto)
  • CallbackCache: simplified implementation using Atomic (#1834) via NachoSoto (@NachoSoto)
  • PurchasesLogInTests: added test to verify logIn updates offerings cache (#1833) via NachoSoto (@NachoSoto)
  • Created PurchasesLoginTests (#1832) via NachoSoto (@NachoSoto)
  • SwiftLint: cleaned up output (#1821) via NachoSoto (@NachoSoto)
  • Link to sdk reference (#1831) via aboedo (@aboedo)
  • Atomic: ExpressibleByBooleanLiteral (#1822) via NachoSoto (@NachoSoto)
  • SwiftLint: fixed build warning (#1820) via NachoSoto (@NachoSoto)
  • Adds an approval job that will tag the release (#1815) via Cesar de la Vega (@vegaro)
  • Atomic: ExpressibleByNilLiteral (#1804) via NachoSoto (@NachoSoto)
  • PurchasesAttributionDataTests: fixed potential race condition in flaky test (#1805) via NachoSoto (@NachoSoto)
  • Fixed warnings for unnecessary try (#1816) via NachoSoto (@NachoSoto)
  • Moved AttributionFetcherError inside AttributionFetcher (#1808) via NachoSoto (@NachoSoto)
  • Update documentation for presentCodeRedemptionSheet (#1817) via Joshua Liebowitz (@taquitos)
  • Dangerfile: added "next_release" as supported label (#1810) via NachoSoto (@NachoSoto)
  • PurchaseTester- Update Podfile.lock (#1814) via Joshua Liebowitz (@taquitos)
  • Update to latest fastlane plugin (#1802) via Toni Rico (@tonidero)
  • Clean up: moved BackendIntegrationTests.xctestplan to TestPlans folder (#1812) via NachoSoto (@NachoSoto)
  • SK2StoreProduct: conditionally removed @available workaround (#1794) via NachoSoto (@NachoSoto)
  • SwiftLint: fixed deprecation warning (#1809) via NachoSoto (@NachoSoto)
  • Update gems (#1791) via Joshua Liebowitz (@taquitos)
  • Replace usages of replace_in with replace_text_in_files action (#1803) via Toni Rico (@tonidero)
purchases-ios - 4.10.1

Published by revenuecat-ops about 2 years ago

Bugfixes

  • Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) (#1828) via Josh Holtz (@joshdholtz)
purchases-ios - 4.10.0

Published by revenuecat-ops about 2 years ago

New Features

  • New AdServices Integration (#1727) via Josh Holtz (@joshdholtz)

Bugfixes

  • OfferingsManager: expose underlying error when ProductsManager returns an error (#1792) via NachoSoto (@NachoSoto)
  • Add missing logs to ProductsFetcherSK2 (#1780) via beylmk (@beylmk)

Other Changes

  • AdServices: Fix failing tests on main in iOS 12 and 13 - IOSAttributionPosterTests (#1797) via Josh Holtz (@joshdholtz)
  • Invalidates gem caches and separates danger and macOS caches (#1798) via Cesar de la Vega (@vegaro)
  • Pass CircleCI branch to prepare_next_version job (#1796) via Toni Rico (@tonidero)
  • Configure Danger, enforce labels (#1761) via Cesar de la Vega (@vegaro)
  • Support for new fastlane internal plugin for automation (#1779) via Toni Rico (@tonidero)
purchases-ios - AdServices Beta 2

Published by joshdholtz about 2 years ago

⚠️ ⚠️ ⚠️
Please do not use this version unless you have been in communication with the RevenueCat team about joining the AdServices beta. This functionality will not work otherwise, as it requires special RevenueCat setup.
⚠️ ⚠️ ⚠️

AdServices Beta

New method:
Purchases.shared.attribution.enableAdServicesAttributionTokenCollection() to be called after configuration and after successful permission request (if advanced data is desired).

Please refer to the docs for detailed information on setup.

purchases-ios - 4.9.1

Published by revenuecat-ops about 2 years ago

Fixes:

  • CustomerInfoResponseHandler: return CustomerInfo instead of error if the response was successful (#1778) via NachoSoto (@NachoSoto)
  • Error logging: logErrorIfNeeded no longer prints message if it's the same as the error description (#1776) via NachoSoto (@NachoSoto)
  • fix another broken link in docC docs (#1777) via aboedo (@aboedo)
  • fix links to restorePurchase (#1775) via aboedo (@aboedo)
  • fix getProducts docs broken link (#1772) via aboedo (@aboedo)

Improvements:

  • Logger: wrap message in @autoclosure to avoid creating when LogLevel is disabled (#1781) via NachoSoto (@NachoSoto)

Other changes:

  • Lint: fixed SubscriberAttributesManager (#1774) via NachoSoto (@NachoSoto)
purchases-ios - 4.9.0

Published by revenuecat-ops over 2 years ago

  • Update Configuration.swift to include platformInfo. Used by PurchasesHybridCommon (#1760) via Joshua Liebowitz (@taquitos)
purchases-ios - 4.8.0

Published by revenuecat-ops over 2 years ago

New API

  • EntitlementInfo: added isActiveInCurrentEnvironment and isActiveInAnyEnvironment (#1755) via NachoSoto (@NachoSoto)

Other Changes

  • Plumb platformInfo in Configuration for PHC use (#1757) via Joshua Liebowitz (@taquitos)
  • added a log when autoSyncPurchases is disabled (#1749) via aboedo (@aboedo)
  • Re-fetch cached offerings and products after Storefront changes (3/4) (#1743) via Juanpe Catalán (@Juanpe)
  • bug_report.md: clarify SK2 support (#1752) via NachoSoto (@NachoSoto)
  • logErrorIfNeeded: also log message if present (#1754) via NachoSoto (@NachoSoto)
purchases-ios - AdServices Beta 1

Published by joshdholtz over 2 years ago

⚠️ ⚠️ ⚠️
Please do not use this version unless you have been in communication with the RevenueCat team about joining the AdServices beta. This functionality will not work otherwise, as it requires special RevenueCat setup.
⚠️ ⚠️ ⚠️

AdServices Beta

New method:
Purchases.shared.attribution.enableAdServicesAttributionTokenCollection() to be called after configuration and after successful permission request (if advanced data is desired).

Please refer to the docs for detailed information on setup.

purchases-ios - 4.7.0

Published by revenuecat-ops over 2 years ago

This release is compatible with Xcode 14 beta 2

Changes:

  • Replaced CustomerInfo.nonSubscriptionTransactions with a new non-StoreTransaction type (#1733) via NachoSoto (@NachoSoto)
  • Purchases.configure: added overload taking a Configuration.Builder (#1720) via NachoSoto (@NachoSoto)
  • Extract Attribution logic out of Purchases (#1693) via Joshua Liebowitz (@taquitos)
  • Remove create alias (#1695) via Joshua Liebowitz (@taquitos)

All attribution APIs can now be accessed from Purchases.shared.attribution.

Improvements:

  • Improved purchasing logs, added promotional offer information (#1725) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator: don't log attribute errors if there are none (#1742) via NachoSoto (@NachoSoto)
  • FatalErrorUtil: don't override fatalError on release builds (#1736) via NachoSoto (@NachoSoto)
  • SKPaymentTransaction: added more context to warnings about missing properties (#1731) via NachoSoto (@NachoSoto)
  • New SwiftUI Purchase Tester example (#1722) via Josh Holtz (@joshdholtz)
  • update docs for showManageSubscriptions (#1729) via aboedo (@aboedo)
  • PurchasesOrchestrator: unify finish transactions between SK1 and SK2 (#1704) via NachoSoto (@NachoSoto)
  • SubscriberAttribute: converted into struct (#1648) via NachoSoto (@NachoSoto)
  • CacheFetchPolicy.notStaleCachedOrFetched: added warning to docstring (#1708) via NachoSoto (@NachoSoto)
  • Clear cached offerings and products after Storefront changes (2/4) (#1583) via Juanpe Catalán (@Juanpe)
  • ROT13: optimized initialization and removed magic numbers (#1702) via NachoSoto (@NachoSoto)

Fixes:

  • logIn/logOut: sync attributes before aliasing (#1716) via NachoSoto (@NachoSoto)
  • Purchases.customerInfo(fetchPolicy:): actually use fetchPolicy parameter (#1721) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator: fix behavior dealing with nil SKPaymentTransaction.productIdentifier during purchase (#1680) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator.handlePurchasedTransaction: always refresh receipt data (#1703) via NachoSoto (@NachoSoto)