New Features
Offline Entitlements
: use offline-computedCustomerInfo
when server is down (#2368) via NachoSoto (@NachoSoto)
✨ 🌟 With this new feature, even if our main and backup servers are down, the SDK can continue to process purchases. This is enabled transparently to the user, and when the servers come back online, the SDK automatically syncs the information so it can be visible in the dashboard.
Bugfixes
AppleReceipt.debugDescription
: don't pretty-print JSON (#2564) via NachoSoto (@NachoSoto)SK2StoreProduct
: fix crash on iOS 12 (#2565) via NachoSoto (@NachoSoto)GetCustomerInfo
posts receipts if there are pending transactions (#2533) via NachoSoto (@NachoSoto)
Performance Improvements
PurchasedProductsFetcher
: cache current entitlements (#2507) via NachoSoto (@NachoSoto)- Performance: new check to ensure serialization / deserialization is done from background thread (#2496) via NachoSoto (@NachoSoto)
Dependency Updates
- Bump fastlane from 2.212.2 to 2.213.0 (#2544) via dependabot[bot] (@dependabot[bot])
Other Changes
CustomerInfoManager
: post all unfinished transactions (#2563) via NachoSoto (@NachoSoto)PostReceiptOperation
: added ability to also postAdServices
token (#2566) via NachoSoto (@NachoSoto)Offline Entitlements
: improved computation log (#2562) via NachoSoto (@NachoSoto)- Added
TransactionPoster
tests (#2557) via NachoSoto (@NachoSoto) - Refactored
TransactionPoster
: removed 2 dependencies and abstracted parameters (#2542) via NachoSoto (@NachoSoto) CustomerInfoManagerTests
: wait forgetAndCacheCustomerInfo
to finish (#2555) via NachoSoto (@NachoSoto)StoreTransaction
: implementeddescription
(#2556) via NachoSoto (@NachoSoto)Backend.ResponseHandler
is now@Sendable
(#2541) via NachoSoto (@NachoSoto)- Extracted
TransactionPoster
fromPurchasesOrchestrator
(#2540) via NachoSoto (@NachoSoto) enableAdServicesAttributionTokenCollection
: added integration test (#2551) via NachoSoto (@NachoSoto)AttributionPoster
: replaced hardcoded strings with constants (#2548) via NachoSoto (@NachoSoto)DefaultDecodable
: moved toMisc/Codable/DefaultDecodable.swift
(#2528) via NachoSoto (@NachoSoto)CircleCI
: specify device to runbackend_integration_tests
(#2547) via NachoSoto (@NachoSoto)- Created
StoreKit2TransactionFetcher
(#2539) via NachoSoto (@NachoSoto) - Fix load shedder integration tests (#2546) via Josh Holtz (@joshdholtz)
- Fix doc on
Offering.getMetadataValue
(#2545) via Josh Holtz (@joshdholtz) - Extracted and tested
AsyncSequence.extractValues
(#2538) via NachoSoto (@NachoSoto) Offline Entitlements
: don't compute offlineCustomerInfo
when purchasing a consumable products (#2522) via NachoSoto (@NachoSoto)OfflineEntitlementsManager
: disable offlineCustomerInfo
in observer mode (#2520) via NachoSoto (@NachoSoto)BasePurchasesTests
: fixed leak detection (#2534) via NachoSoto (@NachoSoto)PurchaseTesterSwiftUI
: addedProxyView
toiOS
(#2531) via NachoSoto (@NachoSoto)PurchasedProductsFetcher
: removedAppStore.sync
call (#2521) via NachoSoto (@NachoSoto)PurchaseTesterSwiftUI
: added new window on Mac to manage proxy (#2518) via NachoSoto (@NachoSoto)PurchasedProductsFetcher
: added log if fetching purchased products is slow (#2515) via NachoSoto (@NachoSoto)Offline Entitlements
: disable for custom entitlements mode (#2509) via NachoSoto (@NachoSoto)Offline Entitlements
: fixed iOS 12 tests (#2514) via NachoSoto (@NachoSoto)PurchasedProductsFetcher
: don't throw errors if purchased products were found (#2506) via NachoSoto (@NachoSoto)Offline Entitlements
: allow creating offlineCustomerInfo
with emptyProductEntitlementMapping
(#2504) via NachoSoto (@NachoSoto)Offline Entitlements
: integration tests (#2501) via NachoSoto (@NachoSoto)CustomerInfoManager
: don't cache offlineCustomerInfo
(#2378) via NachoSoto (@NachoSoto)DangerousSettings
: debug-onlyforceServerErrors
(#2486) via NachoSoto (@NachoSoto)CocoapodsInstallation
: fixedXcode 14.3.0
issue (#2489) via NachoSoto (@NachoSoto)CarthageInstallation
: removed workaround (#2488) via NachoSoto (@NachoSoto)