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 visible (Hide)

purchases-ios - 4.17.8

Published by RCGitBot over 1 year ago

Bugfixes

  • DispatchTimeInterval & Date: avoid 32-bit overflows, fix watchOS crashes (#2342) via NachoSoto (@NachoSoto)
  • Fix issue with missing subscriber attributes if set after login but before login callback (#2313) via @tonidero

Performance Improvements

  • AppleReceipt.mostRecentActiveSubscription: performance optimization (#2332) via NachoSoto (@NachoSoto)

Other Changes

  • CI: also run tests on watchOS (#2340) via NachoSoto (@NachoSoto)
  • RELEASING.md: added GitHub rate limiting parameter (#2336) via NachoSoto (@NachoSoto)
  • Add additional logging on init (#2324) via Cody Kerns (@codykerns)
  • Replace iff with if and only if (#2323) via @aboedo
  • Fix typo in log (#2315) via @nickkohrn
  • Purchases.restorePurchases: added docstring about successful results (#2316) via NachoSoto (@NachoSoto)
  • RELEASING.md: fixed hotfix instructions (#2304) via NachoSoto (@NachoSoto)
  • PurchaseTester: fixed leak when reconfiguring Purchases (#2311) via NachoSoto (@NachoSoto)
  • ProductsFetcherSK2: add underlying error to description (#2281) via Chris Vasselli (@chrisvasselli)
purchases-ios - 4.17.7

Published by RCGitBot over 1 year ago

Bugfixes

  • Fixed Bundle: Sendable conformance (#2301)
  • Fixed PurchasesOrchestrator compilation error on Xcode 14.3 beta 1 (#2292) via NachoSoto (@NachoSoto)

Other Changes

  • Clarifies error messages for StoreKit 1 bugs (#2294)
purchases-ios - 4.17.6

Published by RCGitBot over 1 year ago

Bugfixes

  • PurchaseOrchestrator: always refresh receipt purchasing in sandbox (#2280) via NachoSoto (@NachoSoto)
  • BundleSandboxEnvironmentDetector: always return true when running on simulator (#2276) via NachoSoto (@NachoSoto)
  • OfferingsManager: ensure underlying OfferingsManager.Error.configurationError is logged (#2266) via NachoSoto (@NachoSoto)

Other Changes

  • UserDefaultsDefaultTests: fixed flaky failures (#2284) via NachoSoto (@NachoSoto)
  • BaseBackendTest: improved test failure message (#2285) via NachoSoto (@NachoSoto)
  • Updated targets and schemes for Xcode 14.2 (#2282) via NachoSoto (@NachoSoto)
  • HTTPRequest.Path.health: don't cache using ETagManager (#2278) via NachoSoto (@NachoSoto)
  • EntitlementInfos.all: fixed docstring (#2279) via NachoSoto (@NachoSoto)
  • StoreKit2StorefrontListener: added tests to fix flaky code coverage (#2265) via NachoSoto (@NachoSoto)
  • NetworkError: added underlying error to description (#2263) via NachoSoto (@NachoSoto)
  • Created Signing.verify(message:hasValidSignature:with:) (#2216) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.5

Published by RCGitBot over 1 year ago

Dependency Updates

  • Bump fastlane-plugin-revenuecat_internal from 738f255 to 9255366 (#2264) via dependabot[bot] (@dependabot[bot])
  • Update Gemfile.lock (#2254) via Cesar de la Vega (@vegaro)

Other Changes

  • HTTPClient: added support for sending X-Nonce (#2214) via NachoSoto (@NachoSoto)
  • Configuration: added (internal for now) API to load public key (#2215) via NachoSoto (@NachoSoto)
  • Replaced Any uses for workaround with Box (#2250) via NachoSoto (@NachoSoto)
  • HTTPClientTests: fixed failing test with missing assertions (#2262) via NachoSoto (@NachoSoto)
  • HTTPClientTests: refactored tests to use waitUntil (#2257) via NachoSoto (@NachoSoto)
  • PurchaseTester: Add Receipt Inspector UI (#2249) via Andy Boedo (@aboedo)
  • Adds dependabot (#2259) via Cesar de la Vega (@vegaro)
  • StoreKit1WrapperTests: avoid using Bool.random to fix flaky code coverage (#2258) via NachoSoto (@NachoSoto)
  • IntroEligibilityCalculator: changed logic to handle products with no subscription group (#2247) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.4

Published by RCGitBot over 1 year ago

Bugfixes

  • CustomerInfoManager: improved thread-safety (#2224) via NachoSoto (@NachoSoto)

Other Changes

  • StoreKitIntegrationTests: replaced XCTSkipIf with XCTExpectFailure (#2244) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator: changed ReceiptRefreshPolicy.always to .onlyIfEmpty after a purchase (#2245) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.3

Published by RCGitBot over 1 year ago

Bugfixes

  • IntroEligibilityCalculator: fixed logic for subscriptions in same group (#2174) via NachoSoto (@NachoSoto)
  • PurchasesOrchestrator: finish SK2 transactions from StoreKit.Transaction.updates after posting receipt (#2243) via NachoSoto (@NachoSoto)

Other Changes

  • Purchases: fixed documentation warnings (#2241) via NachoSoto (@NachoSoto)
  • Code coverage (#2242) via NachoSoto (@NachoSoto)
  • Improve logging for custom package durations (#2240) via Cody Kerns (@codykerns)
  • TrialOrIntroPriceEligibilityChecker: use TimingUtil to log when it takes too long (#2238) via NachoSoto (@NachoSoto)
  • Update fastlane-plugin-revenuecat_internal (#2239) via NachoSoto (@NachoSoto)
  • Simplified OperationDispatcher.dispatchOnMainActor (#2236) via NachoSoto (@NachoSoto)
  • PurchaseTester: added contents of CHANGELOG.latest.md to TestFlight changelog (#2233) via NachoSoto (@NachoSoto)
  • SystemInfo.isApplicationBackgrounded: added overload for @MainActor (#2230) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.2

Published by RCGitBot over 1 year ago

Bugfixes

  • Purchases: avoid potential crash when initializing in the background (#2231) via NachoSoto (@NachoSoto)

Other Changes

  • PurchaseTester: ignore errors when restoring purchases (#2228) via NachoSoto (@NachoSoto)
  • PurchaseTester: fixed isPurchasing state when purchasing fails (#2229) via NachoSoto (@NachoSoto)
  • PurchaseTester: setting changelog when submitting to TestFlight (#2232) via NachoSoto (@NachoSoto)
  • Revert "SPM: added APPLICATION_EXTENSION_API_ONLY flag to RevenueCat and ReceiptParser (#2217)" (#2225) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.1

Published by RCGitBot almost 2 years ago

Other Changes

  • set flag to extract objc info for swift symbols (#2218) via Andy Boedo (@aboedo)
  • Produce a compilation error when using an old Xcode version (#2222) via NachoSoto (@NachoSoto)
  • SPM: added APPLICATION_EXTENSION_API_ONLY flag to RevenueCat and ReceiptParser (#2217) via NachoSoto (@NachoSoto)
  • PurchaseTester: added section to visualize AppleReceipt (#2211) via NachoSoto (@NachoSoto)
purchases-ios - 4.17.0

Published by RCGitBot almost 2 years ago

New Features

  • Added new ReceiptParser.fetchAndParseLocalReceipt (#2204) via NachoSoto (@NachoSoto)
  • PurchasesReceiptParser: added API to parse receipts from base64 string (#2200) via NachoSoto (@NachoSoto)

Bugfixes

  • CustomerInfo: support parsing schema version 2 to restore SDK v3.x compatibility (#2213) via NachoSoto (@NachoSoto)

Other Changes

  • JSONDecoder: added decoding type when logging DecodingError.keyNotFound (#2212) via NachoSoto (@NachoSoto)
  • Added ReceiptParserTests (#2203) via NachoSoto (@NachoSoto)
  • Deploy PurchaseTester for macOS (#2011) via NachoSoto (@NachoSoto)
  • ReceiptFetcher: refactored implementation to log error when failing to fetch receipt (#2202) via NachoSoto (@NachoSoto)
  • PostReceiptDataOperation: replaced receipt base64 with hash for cache key (#2199) via NachoSoto (@NachoSoto)
  • PurchaseTester: small refactor to simplify Date formatting (#2210) via NachoSoto (@NachoSoto)
  • PurchasesReceiptParser: improved documentation to reference default (#2197) via NachoSoto (@NachoSoto)
  • Created CachingTrialOrIntroPriceEligibilityChecker (#2007) via NachoSoto (@NachoSoto)
  • Update Gemfile.lock (#2205) via Cesar de la Vega (@vegaro)
  • remove stalebot in favor of SLAs in Zendesk (#2196) via Andy Boedo (@aboedo)
  • Update fastlane-plugin-revenuecat_internal to latest version (#2194) via Cesar de la Vega (@vegaro)
purchases-ios - 4.16.0

Published by RCGitBot almost 2 years ago

New Features

  • Created ReceiptParser SPM (#2155) via NachoSoto (@NachoSoto)
  • Exposed PurchasesReceiptParser and AppleReceipt (#2153) via NachoSoto (@NachoSoto)

Bugfixes

  • Restore purchases: post product data when posting receipts (#2178) via NachoSoto (@NachoSoto)

Other Changes

  • Added Dictionary.merge (#2190) via NachoSoto (@NachoSoto)
  • CircleCI: use Xcode 14.2.0 (#2187) via NachoSoto (@NachoSoto)
  • ReceiptParser: a few documentation improvements (#2189) via NachoSoto (@NachoSoto)
  • Purchase Tester: fixed TestFlight deployment (#2188) via NachoSoto (@NachoSoto)
  • Purchase Tester: display specific IntroEligibilityStatus (#2184) via NachoSoto (@NachoSoto)
  • Purchase Tester: fixed SubscriptionPeriod (#2185) via NachoSoto (@NachoSoto)
purchases-ios - 4.15.5

Published by RCGitBot almost 2 years ago

Bugfixes

  • ErrorUtils.purchasesError(withUntypedError:): handle PublicErrors (#2165) via NachoSoto (@NachoSoto)
  • Fixed race condition finishing SK1 transactions (#2148) via NachoSoto (@NachoSoto)
  • IntroEligibilityStatus: added CustomStringConvertible implementation (#2182) via NachoSoto (@NachoSoto)
  • BundleSandboxEnvironmentDetector: fixed logic for macOS (#2176) via NachoSoto (@NachoSoto)
  • Fixed AttributionFetcher.adServicesToken hanging when called in simulator (#2157) via NachoSoto (@NachoSoto)

Other Changes

  • Purchase Tester: added ability to purchase products directly with StoreKit (#2172) via NachoSoto (@NachoSoto)
  • DNSChecker: simplified NetworkError initialization (#2166) via NachoSoto (@NachoSoto)
  • Purchases initialization: refactor to avoid multiple concurrent instances in memory (#2180) via NachoSoto (@NachoSoto)
  • Purchase Tester: added button to clear messages on logger view (#2179) via NachoSoto (@NachoSoto)
  • NetworkOperation: added assertion to ensure that subclasses call completion (#2138) via NachoSoto (@NachoSoto)
  • CacheableNetworkOperation: avoid unnecessarily creating operations for cache hits (#2135) via NachoSoto (@NachoSoto)
  • PurchaseTester: fixed macOS support (#2175) via NachoSoto (@NachoSoto)
  • IntroEligibilityCalculator: added log including AppleReceipt (#2181) via NachoSoto (@NachoSoto)
  • Purchase Tester: fixed scene manifest (#2170) via NachoSoto (@NachoSoto)
  • HTTPClientTests: refactored to use waitUntil (#2168) via NachoSoto (@NachoSoto)
  • Integration Tests: split up tests in smaller files (#2158) via NachoSoto (@NachoSoto)
  • StoreKitRequestFetcher: removed unnecessary dispatch (#2152) via NachoSoto (@NachoSoto)
  • Purchase Tester: added companion watchOS app (#2140) via NachoSoto (@NachoSoto)
  • StoreKit1Wrapper: added warning if receiving too many updated transactions (#2117) via NachoSoto (@NachoSoto)
  • StoreKitTestHelpers: cleaned up unnecessary log (#2177) via NachoSoto (@NachoSoto)
  • TrialOrIntroPriceEligibilityCheckerSK1Tests: use waitUntilValue (#2173) via NachoSoto (@NachoSoto)
  • DNSChecker: added log with resolved host (#2167) via NachoSoto (@NachoSoto)
  • MagicWeatherSwiftUI: updated README to point to workspace (#2142) via NachoSoto (@NachoSoto)
  • Purchase Tester: fixed .storekit config file reference (#2171) via NachoSoto (@NachoSoto)
  • Purchase Tester: fixed error alerts (#2169) via NachoSoto (@NachoSoto)
  • CI: don't make releases until release-checks pass (#2162) via NachoSoto (@NachoSoto)
  • Fastfile: changed match to readonly (#2161) via NachoSoto (@NachoSoto)
purchases-ios - 4.15.4

Published by RCGitBot almost 2 years ago

Bugfixes

  • Fix sending presentedOfferingIdentifier in StoreKit2 (#2156) via Toni Rico (@tonidero)
  • ReceiptFetcher: throttle receipt refreshing to avoid StoreKit throttle errors (#2146) via NachoSoto (@NachoSoto)

Other Changes

  • Added integration and unit tests to verify observer mode behavior (#2069) via NachoSoto (@NachoSoto)
  • Created ClockType and TestClock to be able to mock time (#2145) via NachoSoto (@NachoSoto)
  • Extracted asyncWait to poll async conditions in tests (#2134) via NachoSoto (@NachoSoto)
  • StoreKitRequestFetcher: added log when starting/ending requests (#2151) via NachoSoto (@NachoSoto)
  • CI: fixed PurchaseTester deployment (#2147) via NachoSoto (@NachoSoto)
purchases-ios - 4.15.3

Published by RCGitBot almost 2 years ago

Bugfixes

  • Un-deprecate Purchases.configure(withAPIKey:appUserID:) and Purchases.configure(withAPIKey:appUserID:observerMode:) (#2129) via NachoSoto (@NachoSoto)

Other Changes

  • ReceiptFetcherTests: refactored tests using waitUntilValue (#2144) via NachoSoto (@NachoSoto)
  • Added a few performance improvements for ReceiptParser (#2124) via NachoSoto (@NachoSoto)
  • CallbackCache: fixed reference (#2143) via NachoSoto (@NachoSoto)
  • PostReceiptDataOperation: clarified receipt debug log (#2128) via NachoSoto (@NachoSoto)
  • CallbackCache: avoid exposing internal mutable cache (#2136) via NachoSoto (@NachoSoto)
  • CallbackCache: added assertion for tests to ensure we don't leak callbacks (#2137) via NachoSoto (@NachoSoto)
  • NetworkOperation: made Atomic references immutable (#2139) via NachoSoto (@NachoSoto)
  • ReceiptParser: ensure parsing never happens in the main thread (#2123) via NachoSoto (@NachoSoto)
  • PostReceiptDataOperation: also print receipt data with verbose logs (#2127) via NachoSoto (@NachoSoto)
  • BasePurchasesTests: detecting and fixing many DeviceCache leaks (#2105) via NachoSoto (@NachoSoto)
  • StoreKitIntegrationTests: added test to check applying a promotional offer during subscription (#1588) via NachoSoto (@NachoSoto)
purchases-ios - 4.15.2

Published by RCGitBot almost 2 years ago

Bugfixes

  • Fixed purchasing with PromotionalOffers using StoreKit 2 (#2020) via NachoSoto (@NachoSoto)

Other Changes

  • CircleCI: cache Homebrew installation (#2103) via NachoSoto (@NachoSoto)
  • Integration Tests: fixed Purchases leak through PurchasesDiagnostics (#2126) via NachoSoto (@NachoSoto)
  • HTTPClient: replaced X-StoreKit2-Setting with X-StoreKit2-Enabled (#2118) via NachoSoto (@NachoSoto)
  • BasePurchasesTests: added assertion to ensure Purchases does not leak (#2104) via NachoSoto (@NachoSoto)
  • ReceiptParser.parse always throws ReceiptParser.Error (#2099) via NachoSoto (@NachoSoto)
  • Tests: ensure Purchases is not configured multiple times (#2100) via NachoSoto (@NachoSoto)
  • Extracted LoggerType (#2098) via NachoSoto (@NachoSoto)
  • Integration Tests: verify Purchases does not leak across tests (#2106) via NachoSoto (@NachoSoto)
  • StoreKit2 listeners: set Task priority to .utility (#2070) via NachoSoto (@NachoSoto)
  • Installation Tests: remove unused code in Fastfile (#2097) via NachoSoto (@NachoSoto)
  • DeviceCache: added verbose logs for init/deinit (#2101) via NachoSoto (@NachoSoto)
  • StoreKit1Wrapper: process transactions in a background thread (#2115) via NachoSoto (@NachoSoto)
  • update CONTRIBUTING.md link in bug report template (#2119) via Nate Lowry (@natelowry)
purchases-ios - 4.15.1

Published by RCGitBot almost 2 years ago

Bugfixes

  • Configuration.with(appUserID:): allow passing nil and added new tests (#2110) via NachoSoto (@NachoSoto)

Other Changes

  • Fix documentation typo (#2113) via Bas Broek (@BasThomas)
purchases-ios - 3.14.3

Published by aboedo almost 2 years ago

purchases-ios - 4.15.0

Published by RCGitBot almost 2 years ago

New Features

  • Added LogLevel.verbose (#2080) via NachoSoto (@NachoSoto)

Other Changes

  • Fixed LogLevel ordering and added tests (#2102) via NachoSoto (@NachoSoto)
  • TimingUtil: fixed Xcode 13.2 compilation (#2088) via NachoSoto (@NachoSoto)
  • Generate documentation for iOS instead of macOS (#2089) via NachoSoto (@NachoSoto)
  • Update fastlane (#2090) via NachoSoto (@NachoSoto)
  • CI: speed up docs-deploy by only installing bundle dependencies (#2092) via NachoSoto (@NachoSoto)
  • Tests: replaced toEventually with new waitUntilValue to simplify tests (#2071) via NachoSoto (@NachoSoto)
  • CircleCI: fixed docs-deploy git credentials (#2087) via NachoSoto (@NachoSoto)
  • Added verbose logs for Purchases and StoreKit1Wrapper lifetime (#2082) via NachoSoto (@NachoSoto)
  • StoreKit: added logs when purchasing and product requests are too slow (#2061) via NachoSoto (@NachoSoto)
  • Created TimingUtil to measure and log methods that are too slow (#2059) via NachoSoto (@NachoSoto)
  • SKTestSession: finish all unfinished transactions before starting each test (#2066) via NachoSoto (@NachoSoto)
  • CircleCI: lowered no_output_timeout to 5 minutes (#2084) via NachoSoto (@NachoSoto)
  • Removed unused APITesters.xcworkspace and created RevenueCat.xcworkspace (#2075) via NachoSoto (@NachoSoto)
  • Atomic: added new test to verify each instance gets its own Lock (#2077) via NachoSoto (@NachoSoto)
  • Logger: exposed generic log method (#2058) via NachoSoto (@NachoSoto)
purchases-ios - 4.14.3

Published by RCGitBot almost 2 years ago

Bugfixes

  • Changed default UserDefaults from .standard to our own Suite (#2046) via NachoSoto (@NachoSoto)

Other Changes

  • Logging: added log when configuring SDK in observer mode (#2065) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: added observer mode setting (#2052) via NachoSoto (@NachoSoto)
  • Exposed SystemInfo.observerMode to simplify code (#2064) via NachoSoto (@NachoSoto)
  • Result.init(catching:) with async method (#2060) via NachoSoto (@NachoSoto)
  • Updated schemes and project for Xcode 14.1 (#2081) via NachoSoto (@NachoSoto)
  • PurchasesSubscriberAttributesTests: simplified tests (#2056) via NachoSoto (@NachoSoto)
  • DeviceCache: removed fatalError for users not overriding UserDefaults (#2079) via NachoSoto (@NachoSoto)
  • DeviceCache: changed NotificationCenter observation to be received on posting thread (#2078) via NachoSoto (@NachoSoto)
  • StoreKit1Wrapper: added instance address when detecting transactions (#2055) via NachoSoto (@NachoSoto)
  • Fixed lint issues with SwiftLint 0.5.0 (#2076) via NachoSoto (@NachoSoto)
  • NSData+RCExtensionsTests: improved errors (#2043) via NachoSoto (@NachoSoto)
  • APITester: fixed warning in SubscriptionPeriodAPI (#2054) via NachoSoto (@NachoSoto)
  • Integration Tests: always run them in random order locally (#2068) via NachoSoto (@NachoSoto)
purchases-ios - 4.14.2

Published by RCGitBot almost 2 years ago

Bugfixes

  • StoreKit 2: don't finish transactions in observer mode (#2053) via NachoSoto (@NachoSoto)

Other Changes

  • CircleCI: added ability to create a release manually (#2067) via NachoSoto (@NachoSoto)
  • Changelog: Fix links to V4 API Migration guide (#2051) via Kevin Quisquater (@KevinQuisquater)
  • HTTPClient: added log for failed requests (#2048) via NachoSoto (@NachoSoto)
  • ErrorResponse.asBackendError: serialize attribute errors as NSDictionary (#2034) via NachoSoto (@NachoSoto)
  • ErrorCode.unknownBackendError: include original error code (#2032) via NachoSoto (@NachoSoto)
  • CI: fixed push-pods job (#2045) via NachoSoto (@NachoSoto)
  • PostReceiptDataOperation: log Apple error when purchase equals expiration date (#2038) via NachoSoto (@NachoSoto)
  • Update Fastlane plugin (#2041) via Cesar de la Vega (@vegaro)
purchases-ios - 4.14.1

Published by RCGitBot almost 2 years ago

Bugfixes

  • ISO8601DateFormatter.withMilliseconds: fixed iOS 11 crash (#2037) via NachoSoto (@NachoSoto)
  • Changed StoreKit2Setting.default back to .enabledOnlyForOptimizations (#2022) via NachoSoto (@NachoSoto)

Other Changes

  • Integration Tests: changed weekly to monthly subscriptions to work around 0-second subscriptions (#2042) via NachoSoto (@NachoSoto)
  • Integration Tests: fixed testPurchaseWithAskToBuyPostsReceipt (#2040) via NachoSoto (@NachoSoto)
  • ReceiptRefreshPolicy.retryUntilProductIsFound: default to returning "invalid" receipt (#2024) via NachoSoto (@NachoSoto)
  • CachingProductsManager: use partial cached products (#2014) via NachoSoto (@NachoSoto)
  • Added BackendErrorCode.purchasedProductMissingInAppleReceipt (#2033) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: replaced Purchases dependency with SPM (#2027) via NachoSoto (@NachoSoto)
  • Integration Tests: changed log output to raw (#2031) via NachoSoto (@NachoSoto)
  • Integration Tests: run on iOS 16 (#2035) via NachoSoto (@NachoSoto)
  • CI: fixed iOS 14 tests Xcode version (#2030) via NachoSoto (@NachoSoto)
  • Async.call: added non-throwing overload (#2006) via NachoSoto (@NachoSoto)
  • Documentation: Fixed references in V4_API_Migration_guide.md (#2018) via NachoSoto (@NachoSoto)
  • eligiblePromotionalOffers: don't log error if response is ineligible (#2019) via NachoSoto (@NachoSoto)
  • Runs push-pods after make-release (#2025) via Cesar de la Vega (@vegaro)
  • Some updates on notify-on-non-patch-release-branches: (#2026) via Cesar de la Vega (@vegaro)
  • Deploy PurchaseTesterSwiftUI to TestFlight (#2003) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: added "logs" screen (#2012) via NachoSoto (@NachoSoto)
  • PurchaseTesterSwiftUI: allow configuring API key at runtime (#1999) via NachoSoto (@NachoSoto)