diff --git a/.circleci/config.yml b/.circleci/config.yml index bd42235725..061f9350e3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -658,7 +658,8 @@ workflows: xcode_version: '14.0.0' <<: *release-tags-and-branches - installation-tests-swift-package-manager: - xcode_version: '14.0.0' + # Not using Xcode 14 yet because it does not contain the new macOS SDK until Ventura is released. + xcode_version: '13.4.1' <<: *release-tags-and-branches - installation-tests-carthage: # Not using Xcode 14 yet because it does not contain the new macOS SDK until Ventura is released. diff --git a/.jazzy.yaml b/.jazzy.yaml index 7656f320bc..e6c365bef8 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -2,9 +2,9 @@ clean: true author: RevenueCat author_url: https://revenuecat.com sdk: iphonesimulator -module_version: 4.14.0-SNAPSHOT +module_version: 4.13.2 github_url: https://github.com/revenuecat/purchases-ios -github_file_prefix: https://github.com/revenuecat/purchases-ios/tree/4.14.0-SNAPSHOT +github_file_prefix: https://github.com/revenuecat/purchases-ios/tree/4.13.2 output: generated_docs include: - "Sources/**/*" diff --git a/.version b/.version index 9fb72d0c67..650edfe9ae 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -4.14.0-SNAPSHOT +4.13.2 diff --git a/CHANGELOG.latest.md b/CHANGELOG.latest.md index fef0ba8471..067ad9ffb6 100644 --- a/CHANGELOG.latest.md +++ b/CHANGELOG.latest.md @@ -1,9 +1,23 @@ +### Bugfixes +* Purchasing: fixed consumable purchases by fixing transaction-finishing (#1965) via NachoSoto (@NachoSoto) +* `ErrorUtils`: improved logging and `localizedDescription` to include underlying errors (#1974) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: also implement `shouldShowPriceConsent` (#1963) via NachoSoto (@NachoSoto) +* `ReceiptFetcher`: added retry mechanism (#1945) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: also conform to `SKPaymentTransactionObserver` to fix promoted purchases (#1962) via NachoSoto (@NachoSoto) ### Other Changes -* `ProductsFetcherSK2`: removed now redundant caching logic (#1908) via NachoSoto (@NachoSoto) -* Created `CachingProductsManager` to provide consistent caching logic when fetching products (#1907) via NachoSoto (@NachoSoto) -* Refactored `ReceiptFetcher.receiptData` (#1941) via NachoSoto (@NachoSoto) -* Abstracted conversion from `async` to completion-block APIs (#1943) via NachoSoto (@NachoSoto) -* Moved `InAppPurchase` into `AppleReceipt` (#1942) via NachoSoto (@NachoSoto) -* `Purchases+async`: combined `@available` statements into a single one (#1944) via NachoSoto (@NachoSoto) -* `Integration Tests`: don't initialize `Purchases` until the `SKTestSession` has been re-created (#1946) via NachoSoto (@NachoSoto) -* `PostReceiptDataOperation`: print receipt data if `debug` logs are enabled (#1940) via NachoSoto (@NachoSoto) +* Updating great support link via Miguel José Carranza Guisado (@MiguelCarranza) +* `OfferingsManager`: added ability to fail if any product is not found (#1976) via NachoSoto (@NachoSoto) +* `OfferingsManager`: added missing test for ignoring missing products (#1975) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: improved abstraction for active `SKPaymentQueue` wrapper (#1968) via NachoSoto (@NachoSoto) +* `ErrorUtils.purchasesError(withUntypedError:)` handle `PurchasesErrorConvertible` (#1973) via NachoSoto (@NachoSoto) +* Renamed `CallbackCache.add(callback:)` (#1970) via NachoSoto (@NachoSoto) +* Fixed iOS 12/13 test snapshots (#1972) via NachoSoto (@NachoSoto) +* Moved `SKPaymentQueue.presentCodeRedemptionSheet` to `StoreKitWorkarounds` (#1967) via NachoSoto (@NachoSoto) +* `Async.call` method to convert completion-block call to `async` (#1969) via NachoSoto (@NachoSoto) +* Remind about updating docs and parity spreadsheet on minor releases (#1955) via Cesar de la Vega (@vegaro) +* `PostReceiptDataOperation`: added `initiationSource` parameter (#1957) via NachoSoto (@NachoSoto) +* `StoreKit1Wrapper`: separated `SKPaymentTransactionObserver` and `SKPaymentQueueDelegate` implementations (#1961) via NachoSoto (@NachoSoto) +* Refactored `Error.isCancelledError` into `Error+Extensions` (#1960) via NachoSoto (@NachoSoto) +* Update fastlane plugin (#1959) via Cesar de la Vega (@vegaro) +* `Integration Tests`: simplified `testIneligibleForIntroAfterPurchaseExpires` to fix flakiness (#1952) via NachoSoto (@NachoSoto) +* fix typo in comment (#1956) via Andy Boedo (@aboedo) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39fb9bc127..d656f61d0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +## 4.13.2 +### Bugfixes +* Purchasing: fixed consumable purchases by fixing transaction-finishing (#1965) via NachoSoto (@NachoSoto) +* `ErrorUtils`: improved logging and `localizedDescription` to include underlying errors (#1974) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: also implement `shouldShowPriceConsent` (#1963) via NachoSoto (@NachoSoto) +* `ReceiptFetcher`: added retry mechanism (#1945) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: also conform to `SKPaymentTransactionObserver` to fix promoted purchases (#1962) via NachoSoto (@NachoSoto) +### Other Changes +* Updating great support link via Miguel José Carranza Guisado (@MiguelCarranza) +* `OfferingsManager`: added ability to fail if any product is not found (#1976) via NachoSoto (@NachoSoto) +* `OfferingsManager`: added missing test for ignoring missing products (#1975) via NachoSoto (@NachoSoto) +* `PaymentQueueWrapper`: improved abstraction for active `SKPaymentQueue` wrapper (#1968) via NachoSoto (@NachoSoto) +* `ErrorUtils.purchasesError(withUntypedError:)` handle `PurchasesErrorConvertible` (#1973) via NachoSoto (@NachoSoto) +* Renamed `CallbackCache.add(callback:)` (#1970) via NachoSoto (@NachoSoto) +* Fixed iOS 12/13 test snapshots (#1972) via NachoSoto (@NachoSoto) +* Moved `SKPaymentQueue.presentCodeRedemptionSheet` to `StoreKitWorkarounds` (#1967) via NachoSoto (@NachoSoto) +* `Async.call` method to convert completion-block call to `async` (#1969) via NachoSoto (@NachoSoto) +* Remind about updating docs and parity spreadsheet on minor releases (#1955) via Cesar de la Vega (@vegaro) +* `PostReceiptDataOperation`: added `initiationSource` parameter (#1957) via NachoSoto (@NachoSoto) +* `StoreKit1Wrapper`: separated `SKPaymentTransactionObserver` and `SKPaymentQueueDelegate` implementations (#1961) via NachoSoto (@NachoSoto) +* Refactored `Error.isCancelledError` into `Error+Extensions` (#1960) via NachoSoto (@NachoSoto) +* Update fastlane plugin (#1959) via Cesar de la Vega (@vegaro) +* `Integration Tests`: simplified `testIneligibleForIntroAfterPurchaseExpires` to fix flakiness (#1952) via NachoSoto (@NachoSoto) +* fix typo in comment (#1956) via Andy Boedo (@aboedo) + ## 4.13.1 ### Other Changes * `ProductsFetcherSK2`: removed now redundant caching logic (#1908) via NachoSoto (@NachoSoto) diff --git a/RevenueCat.podspec b/RevenueCat.podspec index 126dbb95e1..0c0fcdf35e 100644 --- a/RevenueCat.podspec +++ b/RevenueCat.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "RevenueCat" - s.version = "4.14.0-SNAPSHOT" + s.version = "4.13.2" s.summary = "Subscription and in-app-purchase backend service." s.description = <<-DESC diff --git a/Sources/Error Handling/ErrorUtils.swift b/Sources/Error Handling/ErrorUtils.swift index 1d756f397c..dea775db6e 100644 --- a/Sources/Error Handling/ErrorUtils.swift +++ b/Sources/Error Handling/ErrorUtils.swift @@ -290,16 +290,36 @@ enum ErrorUtils { withUntypedError error: Error, fileName: String = #fileID, functionName: String = #function, line: UInt = #line ) -> PurchasesError { - switch error { - case let purchasesError as PurchasesError: - return purchasesError - case let convertible as PurchasesErrorConvertible: - return convertible.asPurchasesError - default: - return ErrorUtils.unknownError( - error: error, - fileName: fileName, functionName: functionName, line: line - ) + if #available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) { + switch error { + case let purchasesError as PurchasesError: + return purchasesError + // This line crashes on iOS 12.x only (see https://github.com/RevenueCat/purchases-ios/pull/1982). + case let convertible as PurchasesErrorConvertible: + return convertible.asPurchasesError + default: + return ErrorUtils.unknownError( + error: error, + fileName: fileName, functionName: functionName, line: line + ) + } + } else { + switch error { + case let purchasesError as PurchasesError: + return purchasesError + // `as PurchasesErrorConvertible` crashes on iOS 12.x, so these explicit casts are a workaround. + // We can't guarantee that these are exhaustive, but at least this covers the most common cases, + // and the `default` below ensures that we don't crash for the rest. + case let backendError as BackendError: + return backendError.asPurchasesError + case let networkError as NetworkError: + return networkError.asPurchasesError + default: + return ErrorUtils.unknownError( + error: error, + fileName: fileName, functionName: functionName, line: line + ) + } } } diff --git a/Sources/Info.plist b/Sources/Info.plist index 2ed72f83c9..cfb76ec9bb 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.14.0 + 4.13.2 CFBundleVersion $(CURRENT_PROJECT_VERSION) LSApplicationCategoryType diff --git a/Sources/Misc/SystemInfo.swift b/Sources/Misc/SystemInfo.swift index 57df015dc0..25c27f9493 100644 --- a/Sources/Misc/SystemInfo.swift +++ b/Sources/Misc/SystemInfo.swift @@ -48,7 +48,7 @@ class SystemInfo { } static var frameworkVersion: String { - return "4.14.0-SNAPSHOT" + return "4.13.2" } static var systemVersion: String { diff --git a/Sources/Purchasing/StoreKit1/PaymentQueueWrapper.swift b/Sources/Purchasing/StoreKit1/PaymentQueueWrapper.swift index 080aef5fe6..7d124f2e99 100644 --- a/Sources/Purchasing/StoreKit1/PaymentQueueWrapper.swift +++ b/Sources/Purchasing/StoreKit1/PaymentQueueWrapper.swift @@ -88,7 +88,7 @@ class PaymentQueueWrapper: NSObject, PaymentQueueWrapperType { } #endif - #if os(iOS) + #if os(iOS) && !targetEnvironment(macCatalyst) @available(iOS 14.0, *) func presentCodeRedemptionSheet() { self.paymentQueue.presentCodeRedemptionSheetIfAvailable() diff --git a/Sources/Purchasing/StoreKit1/StoreKit1Wrapper.swift b/Sources/Purchasing/StoreKit1/StoreKit1Wrapper.swift index 8b9fd1ccd0..da1da08603 100644 --- a/Sources/Purchasing/StoreKit1/StoreKit1Wrapper.swift +++ b/Sources/Purchasing/StoreKit1/StoreKit1Wrapper.swift @@ -114,7 +114,7 @@ extension StoreKit1Wrapper: PaymentQueueWrapperType { } #endif - #if os(iOS) + #if os(iOS) && !targetEnvironment(macCatalyst) @available(iOS 14.0, *) func presentCodeRedemptionSheet() { self.paymentQueue.presentCodeRedemptionSheetIfAvailable() diff --git a/Tests/BackendIntegrationTestApp/Info.plist b/Tests/BackendIntegrationTestApp/Info.plist index 21cade2b0d..2ff432e915 100644 --- a/Tests/BackendIntegrationTestApp/Info.plist +++ b/Tests/BackendIntegrationTestApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.14.0 + 4.13.2 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Tests/BackendIntegrationTests/Info.plist b/Tests/BackendIntegrationTests/Info.plist index 8132e9d046..97345e441d 100644 --- a/Tests/BackendIntegrationTests/Info.plist +++ b/Tests/BackendIntegrationTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.14.0 + 4.13.2 CFBundleVersion 1 diff --git a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h index 74415a7dc5..3580011afd 100644 --- a/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h +++ b/Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h @@ -749,7 +749,7 @@ SWIFT_CLASS_NAMED("DangerousSettings") /// If this is disabled, RevenueCat won’t observe the StoreKit queue, and it will not sync any purchase /// automatically. /// -- (nonnull instancetype)initWithAutoSyncPurchases:(BOOL)autoSyncPurchases OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithAutoSyncPurchases:(BOOL)autoSyncPurchases; @end @@ -1255,9 +1255,20 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCPackageType, "PackageType", open) { RCPackageTypeWeekly = 6, }; +@class SKPaymentTransaction; + +/// A wrapper for SKPaymentQueue +SWIFT_PROTOCOL("_TtP10RevenueCat23PaymentQueueWrapperType_") +@protocol PaymentQueueWrapperType +- (void)finishTransaction:(SKPaymentTransaction * _Nonnull)transaction; +- (void)presentCodeRedemptionSheet SWIFT_AVAILABILITY(maccatalyst,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=14.0); +@end + +/// Implementation of PaymentQueueWrapperType used when SK1 is not enabled. SWIFT_CLASS("_TtC10RevenueCat19PaymentQueueWrapper") -@interface PaymentQueueWrapper : NSObject +@interface PaymentQueueWrapper : NSObject +- (void)finishTransaction:(SKPaymentTransaction * _Nonnull)transaction; - (nonnull instancetype)init SWIFT_UNAVAILABLE; + (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); @end @@ -1267,6 +1278,15 @@ SWIFT_CLASS("_TtC10RevenueCat19PaymentQueueWrapper") @interface PaymentQueueWrapper (SWIFT_EXTENSION(RevenueCat)) @end +@class SKPaymentQueue; +@class SKPayment; + +@interface PaymentQueueWrapper (SWIFT_EXTENSION(RevenueCat)) +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue updatedTransactions:(NSArray * _Nonnull)transactions; +- (BOOL)paymentQueue:(SKPaymentQueue * _Nonnull)queue shouldAddStorePayment:(SKPayment * _Nonnull)payment forProduct:(SKProduct * _Nonnull)product SWIFT_WARN_UNUSED_RESULT; +@end + + /// Enum of supported period types for an entitlement. typedef SWIFT_ENUM_NAMED(NSInteger, RCPeriodType, "PeriodType", open) { /// If the entitlement is not under an introductory or trial period. @@ -2209,7 +2229,6 @@ SWIFT_CLASS_NAMED("PlatformInfo") @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. @@ -2268,6 +2287,7 @@ 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");) @@ -2296,18 +2316,6 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DE -@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) -@property (nonatomic, readonly, copy) NSString * _Nonnull appUserID; -@property (nonatomic, readonly) BOOL isAnonymous; -- (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); -- (void)logOutWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; -- (void)logOutWithCompletionHandler:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, 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); -- (void)getOfferingsWithCompletion:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion; -- (void)offeringsWithCompletionHandler:(void (^ _Nonnull)(RCOfferings * _Nullable, 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); -@end - - @interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) + (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID SWIFT_AVAILABILITY(maccatalyst,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(macos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(watchos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(tvos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(ios,deprecated=1,message="'configure' has been renamed to 'configure(with:)'"); + (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode SWIFT_AVAILABILITY(maccatalyst,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(macos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(watchos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(tvos,deprecated=1,message="'configure' has been renamed to 'configure(with:)'") SWIFT_AVAILABILITY(ios,deprecated=1,message="'configure' has been renamed to 'configure(with:)'"); @@ -2321,6 +2329,18 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL automaticAppleSearchAdsAt @end +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +@property (nonatomic, readonly, copy) NSString * _Nonnull appUserID; +@property (nonatomic, readonly) BOOL isAnonymous; +- (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); +- (void)logOutWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +- (void)logOutWithCompletionHandler:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, 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); +- (void)getOfferingsWithCompletion:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion; +- (void)offeringsWithCompletionHandler:(void (^ _Nonnull)(RCOfferings * _Nullable, 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); +@end + + @interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) @@ -2624,6 +2644,7 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCRefundRequestStatus, "RefundRequestStatus" + /// Enum of supported stores typedef SWIFT_ENUM_NAMED(NSInteger, RCStore, "Store", open) { /// For entitlements granted via Apple App Store. @@ -2644,20 +2665,25 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStore, "Store", open) { SWIFT_CLASS("_TtC10RevenueCat16StoreKit1Wrapper") -@interface StoreKit1Wrapper : NSObject +@interface StoreKit1Wrapper : NSObject - (nonnull instancetype)init; @end -@class SKPaymentQueue; -@class SKPaymentTransaction; -@class SKPayment; - @interface StoreKit1Wrapper (SWIFT_EXTENSION(RevenueCat)) +@end + + +@interface StoreKit1Wrapper (SWIFT_EXTENSION(RevenueCat)) +- (void)finishTransaction:(SKPaymentTransaction * _Nonnull)transaction; +@end + + +@interface StoreKit1Wrapper (SWIFT_EXTENSION(RevenueCat)) - (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue updatedTransactions:(NSArray * _Nonnull)transactions; - (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue removedTransactions:(NSArray * _Nonnull)transactions; -- (BOOL)paymentQueue:(SKPaymentQueue * _Nonnull)queue shouldAddStorePayment:(SKPayment * _Nonnull)payment forProduct:(SKProduct * _Nonnull)product SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(watchos,unavailable); +- (BOOL)paymentQueue:(SKPaymentQueue * _Nonnull)queue shouldAddStorePayment:(SKPayment * _Nonnull)payment forProduct:(SKProduct * _Nonnull)product SWIFT_WARN_UNUSED_RESULT; - (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue didRevokeEntitlementsForProductIdentifiers:(NSArray * _Nonnull)productIdentifiers SWIFT_AVAILABILITY(watchos,introduced=7.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0); - (void)paymentQueueDidChangeStorefront:(SKPaymentQueue * _Nonnull)queue; @end diff --git a/Tests/UnitTests/Info.plist b/Tests/UnitTests/Info.plist index 8132e9d046..97345e441d 100644 --- a/Tests/UnitTests/Info.plist +++ b/Tests/UnitTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.14.0 + 4.13.2 CFBundleVersion 1 diff --git a/Tests/UnitTestsHostApp/Info.plist b/Tests/UnitTestsHostApp/Info.plist index df74fbd1e5..3f1166087f 100644 --- a/Tests/UnitTestsHostApp/Info.plist +++ b/Tests/UnitTestsHostApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.14.0 + 4.13.2 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/scripts/docs/index.html b/scripts/docs/index.html index b409479798..ed6b0cd605 100644 --- a/scripts/docs/index.html +++ b/scripts/docs/index.html @@ -2,7 +2,7 @@ - +