SDK

iOS 4.19.0

iOS 4.19.0

New Features


  • New ErrorCode.signatureVerificationFailed which will be used for an upcoming feature

Bugfixes


  • Purchases.deinit: don't reset Purchases.proxyURL (#2346) via NachoSoto (@NachoSoto)

Other Changes
  • Introduced Configuration.EntitlementVerificationMode and VerificationResult (#2277) via NachoSoto (@NachoSoto)

  • PurchasesDiagnostics: added step to verify signature verification (#2267) via NachoSoto (@NachoSoto)

  • HTTPClient: added signature validation and introduced ErrorCode.signatureVerificationFailed (#2272) via NachoSoto (@NachoSoto)

  • ETagManager: don't use ETags if response verification failed (#2347) via NachoSoto (@NachoSoto)

  • Integration Tests: removed @preconcurrency import (#2464) via NachoSoto (@NachoSoto)

  • Clean up: moved ReceiptParserTests-Info.plist out of root (#2460) via NachoSoto (@NachoSoto)

  • Update CHANGELOG (#2461) via NachoSoto (@NachoSoto)

  • Update SwiftSnapshotTesting (#2453) via NachoSoto (@NachoSoto)

  • Fixed docs (#2432) via Kaunteya Suryawanshi (@kaunteya)

  • Remove unnecessary line break (#2435) via Andy Boedo (@aboedo)

  • ProductEntitlementMapping: enabled entitlement mapping fetching (#2425) via NachoSoto (@NachoSoto)

  • BackendPostReceiptDataTests: increased timeout to fix flaky test (#2426) via NachoSoto (@NachoSoto)

  • Updated requirements to drop Xcode 13.x support (#2419) via NachoSoto (@NachoSoto)

  • Integration Tests: fixed flaky errors when loading offerings (#2420) via NachoSoto (@NachoSoto)

  • PurchaseTester: fixed compilation for internal entitlement verification (#2417) via NachoSoto (@NachoSoto)

  • ETagManager/HTTPClient: sending new X-RC-Last-Refresh-Time header (#2373) via NachoSoto (@NachoSoto)

  • ETagManager: don't send validation time if not present (#2490) via NachoSoto (@NachoSoto)

  • SwiftUI Sample Project: Refactor Package terms method to a computed property (#2405) via Joseph Kokenge (@JOyo246)

  • Clean up v3 load shedder integration tests (#2402) via Andy Boedo (@aboedo)

  • Fix iOS 12 compilation (#2394) via NachoSoto (@NachoSoto)

  • Added new VerificationResult.verifiedOnDevice (#2379) via NachoSoto (@NachoSoto)

  • PurchaseTester: fix memory leaks (#2392) via Keita Watanabe (@kitwtnb)

  • Integration tests: add scheduled job (#2389) via Andy Boedo (@aboedo)

  • Add lane for running iOS v3 load shedder integration tests (#2388) via Andy Boedo (@aboedo)

  • iOS v3 load shedder integration tests (#2387) via Andy Boedo (@aboedo)

  • Offline Entitlements: created LoadShedderIntegrationTests (#2362) via NachoSoto (@NachoSoto)

  • Purchases.configure: log warning if attempting to use a static appUserID (#2385) via Mark Villacampa (@MarkVillacampa)

  • SubscriberAttributesManagerIntegrationTests: fixed flaky failures (#2381) via NachoSoto (@NachoSoto)

  • @DefaultDecodable.Now: fixed flaky test (#2374) via NachoSoto (@NachoSoto)

  • PurchaseTesterSwiftUI: fixed iOS compilation (#2376) via NachoSoto (@NachoSoto)

  • SubscriberAttributesManagerIntegrationTests: fixed potential race condition (#2380) via NachoSoto (@NachoSoto)

  • Offline Entitlements: create CustomerInfo from offline entitlements (#2358) via NachoSoto (@NachoSoto)

  • Added @DefaultDecodable.Now (#2372) via NachoSoto (@NachoSoto)

  • HTTPClient: debug log when performing redirects (#2371) via NachoSoto (@NachoSoto)

  • HTTPClient: new flag to force server errors (#2370) via NachoSoto (@NachoSoto)

  • OfferingsManager: fixed Xcode 13.x build (#2369) via NachoSoto (@NachoSoto)

  • Offline Entitlements: store ProductEntitlementMapping in cache (#2355) via NachoSoto (@NachoSoto)

  • Offline Entitlements: added support for fetching ProductEntitlementMappingResponse in OfflineEntitlementsAPI (#2353) via NachoSoto (@NachoSoto)

  • Offline Entitlements: created ProductEntitlementMapping (#2365) via NachoSoto (@NachoSoto)

  • Implemented NetworkError.isServerDown (#2367) via NachoSoto (@NachoSoto)

  • ETagManager: added test for 304 responses with no etag (#2360) via NachoSoto (@NachoSoto)

  • TestLogHandler: increased default capacity (#2357) via NachoSoto (@NachoSoto)

  • OfferingsManager: moved log to common method to remove hardcoded string (#2363) via NachoSoto (@NachoSoto)

  • Offline Entitlements: created ProductEntitlementMappingResponse (#2351) via NachoSoto (@NachoSoto)

  • HTTPClient: added test for 2xx response for request with etag (#2361) via NachoSoto (@NachoSoto)

  • PurchaseTesterSwiftUI improvements (#2345) via NachoSoto (@NachoSoto)

  • ConfigureStrings: fixed double-space typo (#2344) via NachoSoto (@NachoSoto)

  • ETagManagerTests: fixed tests on iOS 12 (#2349) via NachoSoto (@NachoSoto)

  • DeviceCache: simplified constructor (#2354) via NachoSoto (@NachoSoto)

  • Trusted Entitlements: changed all APIs to internal (#2350) via NachoSoto (@NachoSoto)

  • VerificationResult.notRequested: removed caching reference (#2337) via NachoSoto (@NachoSoto)

  • Finished signature verification HTTPClient tests (#2333) via NachoSoto (@NachoSoto)

  • Configuration.Builder.with(entitlementVerificationMode:): improved documentation (#2334) via NachoSoto (@NachoSoto)

  • ETagManager: don't ignore failed etags with Signing.VerificationMode.informational (#2331) via NachoSoto (@NachoSoto)

  • IdentityManager: clear ETagManager and DeviceCache if verification is enabled but cached CustomerInfo is not (#2330) via NachoSoto (@NachoSoto)

  • Made Configuration.EntitlementVerificationMode.enforced unavailable (#2329) via NachoSoto (@NachoSoto)

  • Refactor: reorganized files in new Security and Misc folders (#2326) via NachoSoto (@NachoSoto)

  • CustomerInfo: use same grace period logic for active subscriptions (#2327) via NachoSoto (@NachoSoto)

  • HTTPClient: don't verify 4xx/5xx responses (#2322) via NachoSoto (@NachoSoto)

  • EntitlementInfo: request date is not optional (#2325) via NachoSoto (@NachoSoto)

  • CustomerInfo: removed entitlementVerification (#2320) via NachoSoto (@NachoSoto)

  • Renamed VerificationResult.notVerified to .notRequested (#2321) via NachoSoto (@NachoSoto)

  • EntitlementInfo: add a grace period limit to outdated entitlements (#2288) via NachoSoto (@NachoSoto)

  • Update CustomerInfo.requestDate from 304 responses (#2310) via NachoSoto (@NachoSoto)

  • Signing: added request time & eTag to signature verification (#2309) via NachoSoto (@NachoSoto)

  • HTTPClient: changed header search to be case-insensitive (#2308) via NachoSoto (@NachoSoto)

  • HTTPClient: automatically add nonce based on HTTPRequest.Path (#2286) via NachoSoto (@NachoSoto)

  • PurchaseTester: added ability to reload CustomerInfo with a custom CacheFetchPolicy (#2312) via NachoSoto (@NachoSoto)

  • Fix issue where underlying error information for product fetch errors was not printed in log. (#2281) via Chris Vasselli (@chrisvasselli)

  • PurchaseTester: added ability to set Configuration.EntitlementVerificationMode (#2290) via NachoSoto (@NachoSoto)

  • SwiftUI: Paywall View should respond to changes on the UserView model (#2297) via ConfusedVorlon (@ConfusedVorlon)

  • Deprecate usesStoreKit2IfAvailable (#2293) via Andy Boedo (@aboedo)

  • Signing: updated to use production public key (#2274) via NachoSoto (@NachoSoto)

To view new release, visit https://github.com/RevenueCat/purchases-ios/releases/tag/4.19.0