diff --git a/.version b/.version index 7171ca1c08..838eff453d 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -5.15.0-SNAPSHOT +5.14.6 diff --git a/CHANGELOG.latest.md b/CHANGELOG.latest.md index 87b13735b5..0d88a0a778 100644 --- a/CHANGELOG.latest.md +++ b/CHANGELOG.latest.md @@ -1,11 +1,11 @@ ## RevenueCat SDK ### 🐞 Bugfixes -* add `fr_FR` localization (#4624) via Andy Boedo (@aboedo) - -## RevenueCatUI SDK -### Paywallv2 -#### 🐞 Bugfixes -* [Paywalls V2] Fix analytics and dismiss (#4620) via Josh Holtz (@joshdholtz) +* [EXTERNAL] Lock RateLimiter.shouldProceed() entirely to avoid race conditions (#4635) via @nguyenhuy (#4637) via JayShortway (@JayShortway) ### πŸ”„ Other Changes -* [Paywalls V2] Added fallback components (#4621) via Josh Holtz (@joshdholtz) +* [Paywalls V2] Implement V2 variables and functions (#4633) via Josh Holtz (@joshdholtz) +* [Paywalls] Fix PaywallTester build (#4636) via Mark Villacampa (@MarkVillacampa) +* [Paywalls] Fix gradient orientation by shifting initial position by 90ΒΊ and making it rotate clockwise (#4634) via Mark Villacampa (@MarkVillacampa) +* [Paywalls V2] Add support for alias solid hex colors (not gradients) (#4632) via Josh Holtz (@joshdholtz) +* [Paywalls V2] Support custom fonts with UIConfig (#4631) via Josh Holtz (@joshdholtz) +* [Paywalls V2] Add UIConfig to OfferingsResponse (#4628) via Josh Holtz (@joshdholtz) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd3507ef6b..a63faafb47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## 5.14.6 +## RevenueCat SDK +### 🐞 Bugfixes +* [EXTERNAL] Lock RateLimiter.shouldProceed() entirely to avoid race conditions (#4635) via @nguyenhuy (#4637) via JayShortway (@JayShortway) + +### πŸ”„ Other Changes +* [Paywalls V2] Implement V2 variables and functions (#4633) via Josh Holtz (@joshdholtz) +* [Paywalls] Fix PaywallTester build (#4636) via Mark Villacampa (@MarkVillacampa) +* [Paywalls] Fix gradient orientation by shifting initial position by 90ΒΊ and making it rotate clockwise (#4634) via Mark Villacampa (@MarkVillacampa) +* [Paywalls V2] Add support for alias solid hex colors (not gradients) (#4632) via Josh Holtz (@joshdholtz) +* [Paywalls V2] Support custom fonts with UIConfig (#4631) via Josh Holtz (@joshdholtz) +* [Paywalls V2] Add UIConfig to OfferingsResponse (#4628) via Josh Holtz (@joshdholtz) + ## 5.14.5 ## RevenueCat SDK ### 🐞 Bugfixes diff --git a/RevenueCat.podspec b/RevenueCat.podspec index 1d520ec61f..b460fc160f 100644 --- a/RevenueCat.podspec +++ b/RevenueCat.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "RevenueCat" - s.version = "5.15.0-SNAPSHOT" + s.version = "5.14.6" s.summary = "Subscription and in-app-purchase backend service." s.description = <<-DESC diff --git a/RevenueCatUI.podspec b/RevenueCatUI.podspec index 634303941b..8ed1e9e545 100644 --- a/RevenueCatUI.podspec +++ b/RevenueCatUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "RevenueCatUI" - s.version = "5.15.0-SNAPSHOT" + s.version = "5.14.6" s.summary = "UI library for RevenueCat paywalls." s.description = <<-DESC diff --git a/Sources/Info.plist b/Sources/Info.plist index 7f23cc66b4..76514cfec7 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 5.15.0 + 5.14.6 CFBundleVersion $(CURRENT_PROJECT_VERSION) LSApplicationCategoryType diff --git a/Sources/Misc/SystemInfo.swift b/Sources/Misc/SystemInfo.swift index ab36d4714e..8239eababc 100644 --- a/Sources/Misc/SystemInfo.swift +++ b/Sources/Misc/SystemInfo.swift @@ -83,7 +83,7 @@ class SystemInfo { } static var frameworkVersion: String { - return "5.15.0-SNAPSHOT" + return "5.14.6" } static var systemVersion: String { diff --git a/Tests/BackendIntegrationTestApp/Info.plist b/Tests/BackendIntegrationTestApp/Info.plist index 9178d69fce..c7556ecf18 100644 --- a/Tests/BackendIntegrationTestApp/Info.plist +++ b/Tests/BackendIntegrationTestApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 5.15.0 + 5.14.6 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Tests/BackendIntegrationTests/Info.plist b/Tests/BackendIntegrationTests/Info.plist index fc9d54b64e..8d7a853973 100644 --- a/Tests/BackendIntegrationTests/Info.plist +++ b/Tests/BackendIntegrationTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 5.15.0 + 5.14.6 CFBundleVersion 1 diff --git a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h index 577d95378d..a1ac174e56 100644 --- a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h +++ b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h @@ -726,12 +726,12 @@ SWIFT_CLASS_NAMED("Builder") @interface RCConfigurationBuilder (SWIFT_EXTENSION(RevenueCat)) -- (RCConfigurationBuilder * _Nonnull)withObserverMode:(BOOL)observerMode SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(macos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy."); +- (RCConfigurationBuilder * _Nonnull)withUsesStoreKit2IfAvailable:(BOOL)usesStoreKit2IfAvailable SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use .with(storeKitVersion:) to enable StoreKit 2"); @end @interface RCConfigurationBuilder (SWIFT_EXTENSION(RevenueCat)) -- (RCConfigurationBuilder * _Nonnull)withUsesStoreKit2IfAvailable:(BOOL)usesStoreKit2IfAvailable SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use .with(storeKitVersion:) to enable StoreKit 2"); +- (RCConfigurationBuilder * _Nonnull)withObserverMode:(BOOL)observerMode SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(macos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy."); @end /// Specifies the behavior for a caching API. @@ -961,11 +961,11 @@ SWIFT_CLASS_NAMED("CustomerInfo") - @interface RCCustomerInfo (SWIFT_EXTENSION(RevenueCat)) @property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; @end + @class RCStoreTransaction; @interface RCCustomerInfo (SWIFT_EXTENSION(RevenueCat)) @@ -2896,6 +2896,35 @@ SWIFT_AVAILABILITY(visionos,introduced=2.0) SWIFT_AVAILABILITY(watchos,introduce @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("\n Configure behavior through the RevenueCat dashboard instead. If you have configured the \"Legacy\" restore\n behavior in the [RevenueCat Dashboard](app.revenuecat.com) and are currently setting this to `true`, keep\n this setting active.\n "); +/// Deprecated. Where responsibility for completing purchase transactions lies. +@property (nonatomic) BOOL finishTransactions SWIFT_DEPRECATED_MSG("Use ``purchasesAreCompletedBy`` 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. @@ -2993,35 +3022,6 @@ SWIFT_AVAILABILITY(visionos,introduced=2.0) SWIFT_AVAILABILITY(watchos,introduce @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("\n Configure behavior through the RevenueCat dashboard instead. If you have configured the \"Legacy\" restore\n behavior in the [RevenueCat Dashboard](app.revenuecat.com) and are currently setting this to `true`, keep\n this setting active.\n "); -/// Deprecated. Where responsibility for completing purchase transactions lies. -@property (nonatomic) BOOL finishTransactions SWIFT_DEPRECATED_MSG("Use ``purchasesAreCompletedBy`` 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)) /// Parses a deep link URL to verify it’s a RevenueCat web purchase redemption link @@ -3381,6 +3381,7 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong, getter=defau @end + @interface RCPurchasesDiagnostics (SWIFT_EXTENSION(RevenueCat)) /// Perform tests to ensure SDK is configured correctly. ///
    @@ -3394,7 +3395,6 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong, getter=defau - /// 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: @@ -3411,13 +3411,13 @@ 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_;) @@ -3659,6 +3659,11 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { /// ///
@property (nonatomic, readonly, strong) NSDecimalNumber * _Nonnull price; +/// Calculates the price of this subscription product per day. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerDay SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); /// Calculates the price of this subscription product per week. /// /// returns: @@ -3692,6 +3697,20 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { /// localizedPricePerYear /// /// +@property (nonatomic, readonly, copy) NSString * _Nullable localizedPricePerDay SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// The formatted price per week using StoreProduct/priceFormatter. +///

Related Symbols

+///
    +///
  • +/// pricePerWeek +///
  • +///
  • +/// localizedPricePerMonth +///
  • +///
  • +/// localizedPricePerYear +///
  • +///
@property (nonatomic, readonly, copy) NSString * _Nullable localizedPricePerWeek SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); /// The formatted price per month using StoreProduct/priceFormatter. ///

Related Symbols

@@ -3787,6 +3806,30 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCDiscountType, "DiscountType", open) { @property (nonatomic, readonly, strong) SKProductDiscount * _Nullable sk1Discount; @end + +@interface RCStoreProductDiscount (SWIFT_EXTENSION(RevenueCat)) +/// Calculates the approximate price of this subscription product per day. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerDay SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// Calculates the approximate price of this subscription product per week. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerWeek SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// Calculates the approximate price of this subscription product per month. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerMonth SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// Calculates the approximate price of this subscription product per year. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerYear SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +@end + @class RCStorefront; /// Abstract class that provides access to properties of a transaction. @@ -3952,6 +3995,7 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCSubscriptionPeriodUnit, "Unit", open) { + @interface RCSubscriptionPeriod (SWIFT_EXTENSION(RevenueCat)) @property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; @end diff --git a/Tests/UnitTests/Info.plist b/Tests/UnitTests/Info.plist index fc9d54b64e..8d7a853973 100644 --- a/Tests/UnitTests/Info.plist +++ b/Tests/UnitTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 5.15.0 + 5.14.6 CFBundleVersion 1 diff --git a/Tests/UnitTestsHostApp/Info.plist b/Tests/UnitTestsHostApp/Info.plist index 316ac0651c..38c20cdece 100644 --- a/Tests/UnitTestsHostApp/Info.plist +++ b/Tests/UnitTestsHostApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 5.15.0 + 5.14.6 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/scripts/docs/index.html b/scripts/docs/index.html index 2ef8ea3ff3..a5968bdb0a 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 d417c52eb0..8fe3a7e471 100644 --- a/scripts/docs/v4_api_migration_guide.html +++ b/scripts/docs/v4_api_migration_guide.html @@ -2,7 +2,7 @@ - + diff --git a/scripts/docs/v5_api_migration_guide.html b/scripts/docs/v5_api_migration_guide.html index c9d75835dd..884809970b 100644 --- a/scripts/docs/v5_api_migration_guide.html +++ b/scripts/docs/v5_api_migration_guide.html @@ -2,7 +2,7 @@ - +