diff --git a/.jazzy.yaml b/.jazzy.yaml
index eb422361d9..1ffda266de 100644
--- a/.jazzy.yaml
+++ b/.jazzy.yaml
@@ -2,7 +2,7 @@ clean: true
author: RevenueCat
author_url: https://revenuecat.com
sdk: iphonesimulator
-module_version: 4.23.0-SNAPSHOT
+module_version: 4.22.1
github_url: https://github.com/revenuecat/purchases-ios
github_file_prefix: https://github.com/revenuecat/purchases-ios/tree/4.18.0-SNAPSHOT
output: generated_docs
diff --git a/.version b/.version
index 83f13098da..352b26ac2b 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-4.23.0-SNAPSHOT
+4.22.1
diff --git a/CHANGELOG.latest.md b/CHANGELOG.latest.md
index b16ff3dcdb..4b5757d3b8 100644
--- a/CHANGELOG.latest.md
+++ b/CHANGELOG.latest.md
@@ -1,41 +1,42 @@
-### New Features
-* New `DebugViewController`: UIKit counterpart for SwiftUI's `debugRevenueCatOverlay` (#2631) via NachoSoto (@NachoSoto)
-* Created `PaywallExtensions`: `StoreView` and `SubscriptionStoreView` overloads for `Offering` (#2593) via NachoSoto (@NachoSoto)
-* Introduced `debugRevenueCatOverlay()`: new SwiftUI debug overlay (#2567) via NachoSoto (@NachoSoto)
### Bugfixes
-* Removed `preventPurchasePopupCallFromTriggeringCacheRefresh`, update caches on `willEnterForeground` (#2623) via NachoSoto (@NachoSoto)
-* Fixed `Catalyst` build with `Xcode 15 beta 1` (#2586) via NachoSoto (@NachoSoto)
-### Dependency Updates
-* Bump danger from 9.3.0 to 9.3.1 (#2592) via dependabot[bot] (@dependabot[bot])
+* `PurchasesOrchestrator`: update `CustomerInfoManager` cache after processing transactions (#2676) via NachoSoto (@NachoSoto)
+* `ErrorResponse`: drastically improved error messages, no more "unknown error"s (#2660) via NachoSoto (@NachoSoto)
+* `PaywallExtensions`: post purchases with `Offering` identifier (#2645) via NachoSoto (@NachoSoto)
+* Support `product_plan_identifier` for purchased subscriptions from `Google Play` (#2654) via Josh Holtz (@joshdholtz)
+### Performance Improvements
+* `copy(with: VerificationResult)`: optimization to avoid copies (#2639) via NachoSoto (@NachoSoto)
### Other Changes
-* `StoreTransaction`: added new `Storefront` to API testers (#2634) via NachoSoto (@NachoSoto)
-* `DebugView`: added snapshot tests (#2630) via NachoSoto (@NachoSoto)
-* `verifyNoUnfinishedTransactions`/`verifyUnfinishedTransaction`: added missing `#file` parameter (#2625) via NachoSoto (@NachoSoto)
-* `PostReceiptDataOperation`: clean up cache key (#2628) via NachoSoto (@NachoSoto)
-* `PurchasesOrchestrator`: also get `Storefront` from SK1 (#2629) via NachoSoto (@NachoSoto)
-* `CI`: disable iOS 17 for now (#2627) via NachoSoto (@NachoSoto)
-* `Tests`: fixed crash on iOS 13 (#2624) via NachoSoto (@NachoSoto)
-* `StoreTransaction`: read `Storefront` from `StoreKit.Transaction` (#2611) via NachoSoto (@NachoSoto)
-* `StoreKitConfigTestCase`/`BaseStoreKitIntegrationTests`: also clear transactions after every test (#2616) via NachoSoto (@NachoSoto)
-* `ErrorCode.networkError`: improved description (#2610) via NachoSoto (@NachoSoto)
-* `PurchaseTester`: make CI job always point to current version (#2622) via NachoSoto (@NachoSoto)
-* Improved `finishAllUnfinishedTransactions` (#2615) via NachoSoto (@NachoSoto)
-* `StoreKitConfigTestCase`: improved `waitForStoreKitTestIfNeeded` (#2614) via NachoSoto (@NachoSoto)
-* `StoreKitConfigTestCase`: set `continueAfterFailure` to `false` (#2617) via NachoSoto (@NachoSoto)
-* `PaywallExtensions`: fixed compilation (#2613) via NachoSoto (@NachoSoto)
-* `CI`: added `iOS 17` job (#2591) via NachoSoto (@NachoSoto)
-* `Encodable.jsonEncodedData`: fixed tests on iOS 17 due to inconsistent key ordering (#2607) via NachoSoto (@NachoSoto)
-* `debugRevenueCatOverlay`: added ability to display new `SubscriptionStoreView` (#2595) via NachoSoto (@NachoSoto)
-* Refactor: extracted all log strings (#2600) via NachoSoto (@NachoSoto)
-* Changed tests to work around `URL` decoding differences in `iOS 17` (#2605) via NachoSoto (@NachoSoto)
-* Removed unnecessary `Strings.trimmedOrError` (#2601) via NachoSoto (@NachoSoto)
-* Fixed test compilation with `Xcode 15` (#2602) via NachoSoto (@NachoSoto)
-* Tests: added `iOS 17` snapshots (#2603) via NachoSoto (@NachoSoto)
-* `StoreProductDiscount`: added `description` (#2604) via NachoSoto (@NachoSoto)
-* `debugRevenueCatOverlay` improvements (#2594) via NachoSoto (@NachoSoto)
-* `Xcode 15`: fixed all documentation warnings (#2596) via NachoSoto (@NachoSoto)
-* `StoreKitObserverModeIntegrationTests`: fixed and disabled SK2 `testPurchaseInDevicePostsReceipt` (#2589) via NachoSoto (@NachoSoto)
-* `StoreKit2TransactionListener`: added log when receiving `Transactions.Updates` (#2588) via NachoSoto (@NachoSoto)
-* `Dictionary.MergeStrategy`: simplify implementation (#2587) via NachoSoto (@NachoSoto)
-* `Configuration.Builder`: fixed doc reference (#2583) via NachoSoto (@NachoSoto)
-* `APITesters`: available since iOS 11 (#2581) via NachoSoto (@NachoSoto)
+* `ETagManager`: refactored e-tag creation and tests (#2671) via NachoSoto (@NachoSoto)
+* `getPromotionalOffer`: return `ErrorCode.ineligibleError` if receipt is not found (#2678) via NachoSoto (@NachoSoto)
+* `TimingUtil`: removed slow purchase logs (#2677) via NachoSoto (@NachoSoto)
+* `CI`: changed `Codecov` to `informational` (#2670) via NachoSoto (@NachoSoto)
+* `LoadShedderIntegrationTests`: verify requests are actually handled by load shedder (#2663) via NachoSoto (@NachoSoto)
+* `ETagManager.httpResultFromCacheOrBackend`: return response headers (#2666) via NachoSoto (@NachoSoto)
+* `Integration Tests`: added tests to verify 304 behavior (#2659) via NachoSoto (@NachoSoto)
+* `HTTPClient`: disable `URLSession` cache (#2668) via NachoSoto (@NachoSoto)
+* Documented `HTTPStatusCode.isSuccessfullySynced` (#2661) via NachoSoto (@NachoSoto)
+* `NetworkError.signatureVerificationFailed`: added status code to error `userInfo` (#2657) via NachoSoto (@NachoSoto)
+* `HTTPClient`: improved log for failed requests (#2669) via NachoSoto (@NachoSoto)
+* `ETagManager`: added new verbose logs (#2656) via NachoSoto (@NachoSoto)
+* `Signature Verification`: added test-only log for debugging invalid signatures (#2658) via NachoSoto (@NachoSoto)
+* Fixed `HTTPResponse.description` (#2664) via NachoSoto (@NachoSoto)
+* Changed `Logger` to use `os_log` (#2608) via NachoSoto (@NachoSoto)
+* `MainThreadMonitor`: increased threshold (#2662) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: display `receiptURL` (#2652) via NachoSoto (@NachoSoto)
+* `PurchaseTester`: added ability to display `debugRevenueCatOverlay` (#2653) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: ability to close on `macOS`/`Catalyst` (#2649) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: added support for `macOS` (#2648) via NachoSoto (@NachoSoto)
+* `LoadShedderIntegrationTests`: enable signature verification (#2655) via NachoSoto (@NachoSoto)
+* `ImageSnapshot`: fixed Xcode 15 compilation (#2651) via NachoSoto (@NachoSoto)
+* `OfferingsManager`: don't clear offerings cache timestamp when request fails (#2359) via NachoSoto (@NachoSoto)
+* `StoreKitObserverModeIntegrationTests`: added test for posting renewals (#2590) via NachoSoto (@NachoSoto)
+* Always initialize `StoreKit2TransactionListener` even on SK1 mode (#2612) via NachoSoto (@NachoSoto)
+* `ErrorUtils.missingReceiptFileError`: added receipt URL `userInfo` context (#2650) via NachoSoto (@NachoSoto)
+* Added `.xcprivacy` for Xcode 15 (#2619) via NachoSoto (@NachoSoto)
+* `Trusted Entitlements`: added debug log with `ResponseVerificationMode` (#2647) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: simplified title (#2641) via NachoSoto (@NachoSoto)
+* Simplified `Purchases.updateAllCachesIfNeeded` (#2626) via NachoSoto (@NachoSoto)
+* `HTTPResponseTests`: fixed disabled test (#2643) via NachoSoto (@NachoSoto)
+* Add `InternalDangerousSettings.forceSignatureFailures` (#2635) via NachoSoto (@NachoSoto)
+* `IntegrationTests`: explicit `StoreKit 1` mode (#2636) via NachoSoto (@NachoSoto)
+* `Signing`: removed API for loading key from a file (#2638) via NachoSoto (@NachoSoto)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 85e432c42f..d3b80aba57 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,47 @@
+## 4.22.1
+### Bugfixes
+* `PurchasesOrchestrator`: update `CustomerInfoManager` cache after processing transactions (#2676) via NachoSoto (@NachoSoto)
+* `ErrorResponse`: drastically improved error messages, no more "unknown error"s (#2660) via NachoSoto (@NachoSoto)
+* `PaywallExtensions`: post purchases with `Offering` identifier (#2645) via NachoSoto (@NachoSoto)
+* Support `product_plan_identifier` for purchased subscriptions from `Google Play` (#2654) via Josh Holtz (@joshdholtz)
+### Performance Improvements
+* `copy(with: VerificationResult)`: optimization to avoid copies (#2639) via NachoSoto (@NachoSoto)
+### Other Changes
+* `ETagManager`: refactored e-tag creation and tests (#2671) via NachoSoto (@NachoSoto)
+* `getPromotionalOffer`: return `ErrorCode.ineligibleError` if receipt is not found (#2678) via NachoSoto (@NachoSoto)
+* `TimingUtil`: removed slow purchase logs (#2677) via NachoSoto (@NachoSoto)
+* `CI`: changed `Codecov` to `informational` (#2670) via NachoSoto (@NachoSoto)
+* `LoadShedderIntegrationTests`: verify requests are actually handled by load shedder (#2663) via NachoSoto (@NachoSoto)
+* `ETagManager.httpResultFromCacheOrBackend`: return response headers (#2666) via NachoSoto (@NachoSoto)
+* `Integration Tests`: added tests to verify 304 behavior (#2659) via NachoSoto (@NachoSoto)
+* `HTTPClient`: disable `URLSession` cache (#2668) via NachoSoto (@NachoSoto)
+* Documented `HTTPStatusCode.isSuccessfullySynced` (#2661) via NachoSoto (@NachoSoto)
+* `NetworkError.signatureVerificationFailed`: added status code to error `userInfo` (#2657) via NachoSoto (@NachoSoto)
+* `HTTPClient`: improved log for failed requests (#2669) via NachoSoto (@NachoSoto)
+* `ETagManager`: added new verbose logs (#2656) via NachoSoto (@NachoSoto)
+* `Signature Verification`: added test-only log for debugging invalid signatures (#2658) via NachoSoto (@NachoSoto)
+* Fixed `HTTPResponse.description` (#2664) via NachoSoto (@NachoSoto)
+* Changed `Logger` to use `os_log` (#2608) via NachoSoto (@NachoSoto)
+* `MainThreadMonitor`: increased threshold (#2662) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: display `receiptURL` (#2652) via NachoSoto (@NachoSoto)
+* `PurchaseTester`: added ability to display `debugRevenueCatOverlay` (#2653) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: ability to close on `macOS`/`Catalyst` (#2649) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: added support for `macOS` (#2648) via NachoSoto (@NachoSoto)
+* `LoadShedderIntegrationTests`: enable signature verification (#2655) via NachoSoto (@NachoSoto)
+* `ImageSnapshot`: fixed Xcode 15 compilation (#2651) via NachoSoto (@NachoSoto)
+* `OfferingsManager`: don't clear offerings cache timestamp when request fails (#2359) via NachoSoto (@NachoSoto)
+* `StoreKitObserverModeIntegrationTests`: added test for posting renewals (#2590) via NachoSoto (@NachoSoto)
+* Always initialize `StoreKit2TransactionListener` even on SK1 mode (#2612) via NachoSoto (@NachoSoto)
+* `ErrorUtils.missingReceiptFileError`: added receipt URL `userInfo` context (#2650) via NachoSoto (@NachoSoto)
+* Added `.xcprivacy` for Xcode 15 (#2619) via NachoSoto (@NachoSoto)
+* `Trusted Entitlements`: added debug log with `ResponseVerificationMode` (#2647) via NachoSoto (@NachoSoto)
+* `debugRevenueCatOverlay`: simplified title (#2641) via NachoSoto (@NachoSoto)
+* Simplified `Purchases.updateAllCachesIfNeeded` (#2626) via NachoSoto (@NachoSoto)
+* `HTTPResponseTests`: fixed disabled test (#2643) via NachoSoto (@NachoSoto)
+* Add `InternalDangerousSettings.forceSignatureFailures` (#2635) via NachoSoto (@NachoSoto)
+* `IntegrationTests`: explicit `StoreKit 1` mode (#2636) via NachoSoto (@NachoSoto)
+* `Signing`: removed API for loading key from a file (#2638) via NachoSoto (@NachoSoto)
+
## 4.22.0
### New Features
* New `DebugViewController`: UIKit counterpart for SwiftUI's `debugRevenueCatOverlay` (#2631) via NachoSoto (@NachoSoto)
diff --git a/RevenueCat.podspec b/RevenueCat.podspec
index daf65eb9e8..98c18f2dec 100644
--- a/RevenueCat.podspec
+++ b/RevenueCat.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "RevenueCat"
- s.version = "4.23.0-SNAPSHOT"
+ s.version = "4.22.1"
s.summary = "Subscription and in-app-purchase backend service."
s.description = <<-DESC
diff --git a/Sources/Info.plist b/Sources/Info.plist
index 2152e5e9e7..398e7fbcc2 100644
--- a/Sources/Info.plist
+++ b/Sources/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 4.23.0
+ 4.22.1
CFBundleVersion
$(CURRENT_PROJECT_VERSION)
LSApplicationCategoryType
diff --git a/Sources/Misc/SystemInfo.swift b/Sources/Misc/SystemInfo.swift
index 0d81c010f4..3c954f4082 100644
--- a/Sources/Misc/SystemInfo.swift
+++ b/Sources/Misc/SystemInfo.swift
@@ -53,7 +53,7 @@ class SystemInfo {
}
static var frameworkVersion: String {
- return "4.23.0-SNAPSHOT"
+ return "4.22.1"
}
static var systemVersion: String {
diff --git a/Tests/BackendIntegrationTestApp/Info.plist b/Tests/BackendIntegrationTestApp/Info.plist
index d4b852fc32..bb7287e508 100644
--- a/Tests/BackendIntegrationTestApp/Info.plist
+++ b/Tests/BackendIntegrationTestApp/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 4.23.0
+ 4.22.1
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/Tests/BackendIntegrationTests/Info.plist b/Tests/BackendIntegrationTests/Info.plist
index 83d11a0f84..c017b247d8 100644
--- a/Tests/BackendIntegrationTests/Info.plist
+++ b/Tests/BackendIntegrationTests/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 4.23.0
+ 4.22.1
CFBundleVersion
1
diff --git a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h
index f93f3f109a..a9cc846a48 100644
--- a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h
+++ b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h
@@ -697,6 +697,7 @@ SWIFT_CLASS_NAMED("Configuration")
+
@interface RCConfiguration (SWIFT_EXTENSION(RevenueCat))
@end
@@ -728,7 +729,6 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCEntitlementVerificationMode, "EntitlementV
};
-
@class RCEntitlementInfos;
@class NSDate;
@class RCNonSubscriptionTransaction;
@@ -930,6 +930,8 @@ SWIFT_CLASS_NAMED("EntitlementInfo")
@property (nonatomic, readonly) enum RCStore store;
/// The product identifier that unlocked this entitlement
@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier;
+/// The product plan identifier that unlocked this entitlement (usually for a Google Play purchase)
+@property (nonatomic, readonly, copy) NSString * _Nullable productPlanIdentifier;
/// False if this entitlement is unlocked via a production purchase
@property (nonatomic, readonly) BOOL isSandbox;
/// The date an unsubscribe was detected. Can be nil
.
@@ -2409,6 +2411,8 @@ SWIFT_PROTOCOL("_TtP10RevenueCat29PurchasesOrchestratorDelegate_")
@end
+
+
@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) RCPlatformInfo * _Nullable platformInfo;)
+ (RCPlatformInfo * _Nullable)platformInfo SWIFT_WARN_UNUSED_RESULT;
@@ -2425,7 +2429,6 @@ SWIFT_CLASS_NAMED("PlatformInfo")
-
@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
- (void)logIn:(NSString * _Nonnull)appUserID completion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, BOOL, NSError * _Nullable))completion;
- (void)logIn:(NSString * _Nonnull)appUserID completionHandler:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, BOOL, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0);
@@ -2434,33 +2437,6 @@ SWIFT_CLASS_NAMED("PlatformInfo")
@end
-@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
-/// Enable debug logging. Useful for debugging issues with the lovely team @RevenueCat.
-SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DEPRECATED_MSG("use Purchases.logLevel instead");)
-+ (BOOL)debugLogsEnabled SWIFT_WARN_UNUSED_RESULT;
-+ (void)setDebugLogsEnabled:(BOOL)newValue;
-/// Deprecated
-@property (nonatomic) BOOL allowSharingAppStoreAccount SWIFT_DEPRECATED_MSG("Configure behavior through the RevenueCat dashboard instead");
-/// Deprecated
-+ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network SWIFT_DEPRECATED_MSG("Use the set functions instead");
-/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns.
-/// Related articles
-///
-/// \param data Dictionary provided by the network.
-///
-/// \param network Enum for the network the data is coming from, see AttributionNetwork
for supported
-/// networks.
-///
-/// \param networkUserId User Id that should be sent to the network. Default is the current App User Id.
-///
-+ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId SWIFT_DEPRECATED_MSG("Use the set functions instead");
-@end
-
-
@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
/// Configures an instance of the Purchases SDK with a specified Configuration
.
/// The instance will be set as a singleton.
@@ -2552,6 +2528,33 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DE
@end
+@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
+/// Enable debug logging. Useful for debugging issues with the lovely team @RevenueCat.
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DEPRECATED_MSG("use Purchases.logLevel instead");)
++ (BOOL)debugLogsEnabled SWIFT_WARN_UNUSED_RESULT;
++ (void)setDebugLogsEnabled:(BOOL)newValue;
+/// Deprecated
+@property (nonatomic) BOOL allowSharingAppStoreAccount SWIFT_DEPRECATED_MSG("Configure behavior through the RevenueCat dashboard instead");
+/// Deprecated
++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network SWIFT_DEPRECATED_MSG("Use the set functions instead");
+/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns.
+/// Related articles
+///
+/// \param data Dictionary provided by the network.
+///
+/// \param network Enum for the network the data is coming from, see AttributionNetwork
for supported
+/// networks.
+///
+/// \param networkUserId User Id that should be sent to the network. Default is the current App User Id.
+///
++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId SWIFT_DEPRECATED_MSG("Use the set functions instead");
+@end
+
+
@interface RCPurchases (SWIFT_EXTENSION(RevenueCat))
@property (nonatomic, readonly, copy) NSString * _Nonnull appUserID;
@property (nonatomic, readonly) BOOL isAnonymous;
@@ -2875,6 +2878,7 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong, getter=defau
@end
+
SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface RCPurchasesDiagnostics (SWIFT_EXTENSION(RevenueCat))
/// Perform tests to ensure SDK is configured correctly.
@@ -2889,7 +2893,6 @@ SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=13
-
/// A type that can parse Apple receipts from a device.
/// This implements parsing based on Appleās documentation.
/// To use this class you must access PurchasesReceiptParser/default
:
@@ -2906,13 +2909,14 @@ SWIFT_CLASS("_TtC10RevenueCat22PurchasesReceiptParser")
+
+
@interface PurchasesReceiptParser (SWIFT_EXTENSION(RevenueCat))
- (BOOL)receiptHasTransactionsWithReceiptData:(NSData * _Nonnull)receiptData SWIFT_WARN_UNUSED_RESULT;
@end
-
@interface PurchasesReceiptParser (SWIFT_EXTENSION(RevenueCat))
/// A default instance of PurchasesReceiptParser
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong, getter=default) PurchasesReceiptParser * _Nonnull default_;)
@@ -2921,7 +2925,6 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong, getter=defau
-
SWIFT_CLASS("_TtC10RevenueCat21RCPurchasesErrorUtils") SWIFT_AVAILABILITY(maccatalyst,obsoleted=1) SWIFT_AVAILABILITY(macos,obsoleted=1) SWIFT_AVAILABILITY(watchos,obsoleted=1) SWIFT_AVAILABILITY(tvos,obsoleted=1) SWIFT_AVAILABILITY(ios,obsoleted=1)
@interface RCPurchasesErrorUtils : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
diff --git a/Tests/UnitTests/Info.plist b/Tests/UnitTests/Info.plist
index 83d11a0f84..c017b247d8 100644
--- a/Tests/UnitTests/Info.plist
+++ b/Tests/UnitTests/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 4.23.0
+ 4.22.1
CFBundleVersion
1
diff --git a/Tests/UnitTestsHostApp/Info.plist b/Tests/UnitTestsHostApp/Info.plist
index 0e4e642b64..2b8ab1582f 100644
--- a/Tests/UnitTestsHostApp/Info.plist
+++ b/Tests/UnitTestsHostApp/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 4.23.0
+ 4.22.1
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/scripts/docs/index.html b/scripts/docs/index.html
index b98ac6d9fc..8bb394d747 100644
--- a/scripts/docs/index.html
+++ b/scripts/docs/index.html
@@ -2,7 +2,7 @@
-
+
diff --git a/scripts/docs/v4_api_migration_guide.html b/scripts/docs/v4_api_migration_guide.html
index a21c12418f..f0cd1c703f 100644
--- a/scripts/docs/v4_api_migration_guide.html
+++ b/scripts/docs/v4_api_migration_guide.html
@@ -2,7 +2,7 @@
-
+