diff --git a/.version b/.version index 6fcafa4d06..45c0821ace 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -4.26.0-SNAPSHOT +4.25.5 diff --git a/CHANGELOG.latest.md b/CHANGELOG.latest.md index c135d5784a..c4cbcd6115 100644 --- a/CHANGELOG.latest.md +++ b/CHANGELOG.latest.md @@ -1,9 +1,19 @@ -_This release is compatible with Xcode 15 beta 6 and visionOS beta 3_ - ### Bugfixes -* `Xcode 15`: fix non-`visionOS` build by replacing `.custom` platform (#3005) via NachoSoto (@NachoSoto) +* `PurchasesOrchestrator`: fixed callback not invoked regression during downgrades (#3028) via NachoSoto (@NachoSoto) +* `TransactionPoster`: don't finish transactions for non-subscriptions if they're not processed (#2841) via NachoSoto (@NachoSoto) +### Performance Improvements +* `StoreKit 2`: only listen to `StoreKit.Transaction.updates` when SK2 is enabled (#3032) via NachoSoto (@NachoSoto) +* `CustomerInfoManager`: post transactions in parallel to POST receipts only once (#2954) via NachoSoto (@NachoSoto) ### Other Changes -* `Integration Tests`: test for `SignatureVerificationMode.informational` and receipt posting when fetching `CustomerInfo` (#3000) via NachoSoto (@NachoSoto) -* `Custom Entitlement Computation`: fixed `visionOS` build (#2999) via NachoSoto (@NachoSoto) -* `HTTPClient`: extracted `HTTPRequestPath` protocol (#2986) via NachoSoto (@NachoSoto) -* `CI`: add `visionOS` build (#2990) via NachoSoto (@NachoSoto) +* `PostedTransactionCache`: remove implementation (#3030) via NachoSoto (@NachoSoto) +* `Integration Tests`: improved `testCanPurchaseMultipleSubscriptions` (#3025) via NachoSoto (@NachoSoto) +* `GitHub`: improved `ISSUE_TEMPLATE` (#3022) via NachoSoto (@NachoSoto) +* `TransactionPoster`: added transaction ID and Date to log (#3026) via NachoSoto (@NachoSoto) +* `TransactionPoster`: fix iOS 12 test (#3018) via NachoSoto (@NachoSoto) +* `SystemInfo`: added `ClockType` (#3014) via NachoSoto (@NachoSoto) +* `Integration Tests`: begin tests with `UIApplication.willEnterForegroundNotification` to simulate a real app (#3015) via NachoSoto (@NachoSoto) +* `Integration Tests`: add tests to verify `CustomerInfo`+`Offerings` request de-dupping (#3013) via NachoSoto (@NachoSoto) +* `SwiftLint`: disable `unneeded_synthesized_initializer` (#3010) via NachoSoto (@NachoSoto) +* Added `internal` `NonSubscriptionTransaction.storeTransactionIdentifier` (#3009) via NachoSoto (@NachoSoto) +* `Integration Tests`: added tests for non-renewing and non-consumable packages (#3008) via NachoSoto (@NachoSoto) +* Expanded `EnsureNonEmptyArrayDecodable` to `EnsureNonEmptyCollectionDecodable` (#3002) via NachoSoto (@NachoSoto) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec1b476fe5..831f0e9c72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## 4.25.5 +### Bugfixes +* `PurchasesOrchestrator`: fixed callback not invoked regression during downgrades (#3028) via NachoSoto (@NachoSoto) +* `TransactionPoster`: don't finish transactions for non-subscriptions if they're not processed (#2841) via NachoSoto (@NachoSoto) +### Performance Improvements +* `StoreKit 2`: only listen to `StoreKit.Transaction.updates` when SK2 is enabled (#3032) via NachoSoto (@NachoSoto) +* `CustomerInfoManager`: post transactions in parallel to POST receipts only once (#2954) via NachoSoto (@NachoSoto) +### Other Changes +* `PostedTransactionCache`: remove implementation (#3030) via NachoSoto (@NachoSoto) +* `Integration Tests`: improved `testCanPurchaseMultipleSubscriptions` (#3025) via NachoSoto (@NachoSoto) +* `GitHub`: improved `ISSUE_TEMPLATE` (#3022) via NachoSoto (@NachoSoto) +* `TransactionPoster`: added transaction ID and Date to log (#3026) via NachoSoto (@NachoSoto) +* `TransactionPoster`: fix iOS 12 test (#3018) via NachoSoto (@NachoSoto) +* `SystemInfo`: added `ClockType` (#3014) via NachoSoto (@NachoSoto) +* `Integration Tests`: begin tests with `UIApplication.willEnterForegroundNotification` to simulate a real app (#3015) via NachoSoto (@NachoSoto) +* `Integration Tests`: add tests to verify `CustomerInfo`+`Offerings` request de-dupping (#3013) via NachoSoto (@NachoSoto) +* `SwiftLint`: disable `unneeded_synthesized_initializer` (#3010) via NachoSoto (@NachoSoto) +* Added `internal` `NonSubscriptionTransaction.storeTransactionIdentifier` (#3009) via NachoSoto (@NachoSoto) +* `Integration Tests`: added tests for non-renewing and non-consumable packages (#3008) via NachoSoto (@NachoSoto) +* Expanded `EnsureNonEmptyArrayDecodable` to `EnsureNonEmptyCollectionDecodable` (#3002) via NachoSoto (@NachoSoto) + ## 4.25.4 _This release is compatible with Xcode 15 beta 6 and visionOS beta 3_ diff --git a/RevenueCat.podspec b/RevenueCat.podspec index ae60fb290b..07e3cc0eb4 100644 --- a/RevenueCat.podspec +++ b/RevenueCat.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "RevenueCat" - s.version = "4.26.0-SNAPSHOT" + s.version = "4.25.5" s.summary = "Subscription and in-app-purchase backend service." s.description = <<-DESC diff --git a/Sources/Info.plist b/Sources/Info.plist index fa86b78981..6cb7337e58 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.26.0 + 4.25.5 CFBundleVersion $(CURRENT_PROJECT_VERSION) LSApplicationCategoryType diff --git a/Sources/Misc/SystemInfo.swift b/Sources/Misc/SystemInfo.swift index 22423aa6e0..f8dc3d320b 100644 --- a/Sources/Misc/SystemInfo.swift +++ b/Sources/Misc/SystemInfo.swift @@ -54,7 +54,7 @@ class SystemInfo { } static var frameworkVersion: String { - return "4.26.0-SNAPSHOT" + return "4.25.5" } static var systemVersion: String { diff --git a/Tests/BackendIntegrationTestApp/Info.plist b/Tests/BackendIntegrationTestApp/Info.plist index 782367cc94..b2ec3980cb 100644 --- a/Tests/BackendIntegrationTestApp/Info.plist +++ b/Tests/BackendIntegrationTestApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.26.0 + 4.25.5 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Tests/BackendIntegrationTests/Info.plist b/Tests/BackendIntegrationTests/Info.plist index 51c6d0a506..a5f6956728 100644 --- a/Tests/BackendIntegrationTests/Info.plist +++ b/Tests/BackendIntegrationTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.26.0 + 4.25.5 CFBundleVersion 1 diff --git a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h index 91a650bcd6..0d97899ba1 100644 --- a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h +++ b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h @@ -723,7 +723,6 @@ SWIFT_CLASS_NAMED("Configuration") - @interface RCConfiguration (SWIFT_EXTENSION(RevenueCat)) @end @@ -761,6 +760,7 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCEntitlementVerificationMode, "EntitlementV }; + @class RCEntitlementInfos; @class NSDate; @class RCNonSubscriptionTransaction; @@ -780,6 +780,18 @@ SWIFT_CLASS_NAMED("CustomerInfo") @property (nonatomic, readonly, copy) NSDate * _Nullable latestExpirationDate; /// Returns all the non-subscription purchases a user has made. /// The purchases are ordered by purchase date in ascending order. +/// This includes: +/// @property (nonatomic, readonly, copy) NSArray * _Nonnull nonSubscriptions; /// Returns the fetch date of this CustomerInfo. @property (nonatomic, readonly, copy) NSDate * _Nonnull requestDate; @@ -861,6 +873,7 @@ SWIFT_CLASS_NAMED("CustomerInfo") + @interface RCCustomerInfo (SWIFT_EXTENSION(RevenueCat)) @property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; @end @@ -1265,14 +1278,29 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCLogLevel, "LogLevel", open) { /// Information that represents a non-subscription purchase made by a user. +/// This can be one of these types of product: +/// SWIFT_CLASS_NAMED("NonSubscriptionTransaction") @interface RCNonSubscriptionTransaction : NSObject /// The product identifier. @property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; /// The date that App Store charged the user’s account. @property (nonatomic, readonly, copy) NSDate * _Nonnull purchaseDate; -/// The unique identifier for the transaction. +/// The unique identifier for the transaction created by RevenueCat. @property (nonatomic, readonly, copy) NSString * _Nonnull transactionIdentifier; +/// The unique identifier for the transaction created by the Store. +@property (nonatomic, readonly, copy) NSString * _Nonnull storeTransactionIdentifier; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; - (nonnull instancetype)init SWIFT_UNAVAILABLE; + (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); @end @@ -2469,6 +2497,7 @@ 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; @@ -2486,7 +2515,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); @@ -2936,7 +2964,6 @@ 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. @@ -2951,6 +2978,7 @@ 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: @@ -3151,6 +3179,13 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { @property (nonatomic, readonly, copy) NSLocale * _Nonnull priceLocale SWIFT_AVAILABILITY(macos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(watchos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(tvos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(ios,unavailable,message="Use localizedPriceString instead"); @end + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product; +/// Returns the SKProduct if this StoreProduct represents a StoreKit.SKProduct. +@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product; +@end + @class NSDecimalNumber; @interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) @@ -3185,13 +3220,6 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { @property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString; @end - -@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) -- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product; -/// Returns the SKProduct if this StoreProduct represents a StoreKit.SKProduct. -@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product; -@end - enum RCPaymentMode : NSInteger; enum RCDiscountType : NSInteger; diff --git a/Tests/UnitTests/Info.plist b/Tests/UnitTests/Info.plist index 51c6d0a506..a5f6956728 100644 --- a/Tests/UnitTests/Info.plist +++ b/Tests/UnitTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.26.0 + 4.25.5 CFBundleVersion 1 diff --git a/Tests/UnitTestsHostApp/Info.plist b/Tests/UnitTestsHostApp/Info.plist index fd308262d9..0d82e546be 100644 --- a/Tests/UnitTestsHostApp/Info.plist +++ b/Tests/UnitTestsHostApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.26.0 + 4.25.5 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/scripts/docs/index.html b/scripts/docs/index.html index 0662d31195..1fa35b4c97 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 ca1725ca44..848391b784 100644 --- a/scripts/docs/v4_api_migration_guide.html +++ b/scripts/docs/v4_api_migration_guide.html @@ -2,7 +2,7 @@ - +