From 1499538d3399fb913026d8d136344729b4589e04 Mon Sep 17 00:00:00 2001
From: James Borthwick <109382862+jamesrb1@users.noreply.github.com>
Date: Tue, 18 Jun 2024 13:14:46 -0700
Subject: [PATCH] Xcode project with RevenueCatUI + Tests (#3960)
### RevenueCatUI and its tests are now accessible in the files
navigator:
### It add two new schemes:
Use RevenueCatUIDev to build RevenueCatUI, and RevenueCatUITests to run
its tests.
### Linting works:
### Individual tests can be run from the UI:
## N.B.
- Tests must be run via the RevenueCatUITest scheme.
- Xcode sometimes has difficulties switching schemes. If you see the
errors below, **clean the build folder** and try again and it will work
- Building with the RevenueCatUIDev scheme creates some warnings related
to switches. Adding in an `@unknown default:` resolves the warning but
causes an error in other configurations ("Default will never be
executed").
- Because the root Package file was not altered, this PR won't have any
affect on how our package works when integrated via SPM.
---------
Co-authored-by: Cesar de la Vega
---
.../xcschemes/RevenueCatUITests.xcscheme | 54 +
RevenueCat.xcodeproj/project.pbxproj | 1473 ++++++++++++++++-
.../xcschemes/RevenueCatUIDev.xcscheme | 72 +
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
RevenueCatUI/Data/Localization.swift | 7 +
.../Data/PaywallViewMode+Extensions.swift | 8 +
RevenueCatUI/Helpers/Bundle+Extensions.swift | 2 +-
RevenueCatUI/RevenueCatUIDev.xctestplan | 24 +
RevenueCatUIDev/RevenueCatUIDev.h | 24 +
.../UI/Views/SamplePaywallsList.swift | 10 +-
10 files changed, 1673 insertions(+), 9 deletions(-)
create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/RevenueCatUITests.xcscheme
create mode 100644 RevenueCat.xcodeproj/xcshareddata/xcschemes/RevenueCatUIDev.xcscheme
create mode 100644 RevenueCat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
create mode 100644 RevenueCatUI/RevenueCatUIDev.xctestplan
create mode 100644 RevenueCatUIDev/RevenueCatUIDev.h
diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/RevenueCatUITests.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/RevenueCatUITests.xcscheme
new file mode 100644
index 0000000000..75f445768d
--- /dev/null
+++ b/.swiftpm/xcode/xcshareddata/xcschemes/RevenueCatUITests.xcscheme
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RevenueCat.xcodeproj/project.pbxproj b/RevenueCat.xcodeproj/project.pbxproj
index 7de5ce4a08..1bf671e6f8 100644
--- a/RevenueCat.xcodeproj/project.pbxproj
+++ b/RevenueCat.xcodeproj/project.pbxproj
@@ -620,7 +620,149 @@
6E38843A0CAFD551013D0A3F /* StoreProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECF627761D375C8431EB866 /* StoreProduct.swift */; };
805B60C97993B311CEC93EAF /* ProductsFetcherSK2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3628C1F100BB3C1782860D24 /* ProductsFetcherSK2.swift */; };
80E80EF226970E04008F245A /* ReceiptFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80E80EF026970DC3008F245A /* ReceiptFetcher.swift */; };
+ 887A5FBD2C1D036200E1A461 /* RevenueCatUIDev.h in Headers */ = {isa = PBXBuildFile; fileRef = 887A5FBC2C1D036200E1A461 /* RevenueCatUIDev.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 887A60672C1D037000E1A461 /* PaywallError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FC72C1D037000E1A461 /* PaywallError.swift */; };
+ 887A60682C1D037000E1A461 /* TemplateError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FC82C1D037000E1A461 /* TemplateError.swift */; };
+ 887A60692C1D037000E1A461 /* IntroEligibilityViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FCA2C1D037000E1A461 /* IntroEligibilityViewModel.swift */; };
+ 887A606A2C1D037000E1A461 /* TrialOrIntroEligibilityChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FCB2C1D037000E1A461 /* TrialOrIntroEligibilityChecker.swift */; };
+ 887A606B2C1D037000E1A461 /* TrialOrIntroEligibilityChecker+TestData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FCC2C1D037000E1A461 /* TrialOrIntroEligibilityChecker+TestData.swift */; };
+ 887A606C2C1D037000E1A461 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FCE2C1D037000E1A461 /* Constants.swift */; };
+ 887A606D2C1D037000E1A461 /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FCF2C1D037000E1A461 /* Localization.swift */; };
+ 887A606E2C1D037000E1A461 /* LocalizedAlertError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD02C1D037000E1A461 /* LocalizedAlertError.swift */; };
+ 887A606F2C1D037000E1A461 /* PaywallData+Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD12C1D037000E1A461 /* PaywallData+Validation.swift */; };
+ 887A60702C1D037000E1A461 /* PaywallTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD22C1D037000E1A461 /* PaywallTemplate.swift */; };
+ 887A60712C1D037000E1A461 /* PaywallViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD32C1D037000E1A461 /* PaywallViewConfiguration.swift */; };
+ 887A60722C1D037000E1A461 /* PaywallViewMode+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD42C1D037000E1A461 /* PaywallViewMode+Extensions.swift */; };
+ 887A60732C1D037000E1A461 /* ProcessedLocalizedConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD52C1D037000E1A461 /* ProcessedLocalizedConfiguration.swift */; };
+ 887A60742C1D037000E1A461 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD62C1D037000E1A461 /* Strings.swift */; };
+ 887A60752C1D037000E1A461 /* TemplateViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD72C1D037000E1A461 /* TemplateViewConfiguration.swift */; };
+ 887A60762C1D037000E1A461 /* TemplateViewConfiguration+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD82C1D037000E1A461 /* TemplateViewConfiguration+Extensions.swift */; };
+ 887A60772C1D037000E1A461 /* TemplateViewConfiguration+Images.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FD92C1D037000E1A461 /* TemplateViewConfiguration+Images.swift */; };
+ 887A60782C1D037000E1A461 /* TestData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FDA2C1D037000E1A461 /* TestData.swift */; };
+ 887A60792C1D037000E1A461 /* UserInterfaceIdiom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FDB2C1D037000E1A461 /* UserInterfaceIdiom.swift */; };
+ 887A607A2C1D037000E1A461 /* Variables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FDC2C1D037000E1A461 /* Variables.swift */; };
+ 887A607B2C1D037000E1A461 /* Bundle+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FDE2C1D037000E1A461 /* Bundle+Extensions.swift */; };
+ 887A607C2C1D037000E1A461 /* ColorInformation+MultiScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FDF2C1D037000E1A461 /* ColorInformation+MultiScheme.swift */; };
+ 887A607D2C1D037000E1A461 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE02C1D037000E1A461 /* ImageLoader.swift */; };
+ 887A607E2C1D037000E1A461 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE12C1D037000E1A461 /* Logger.swift */; };
+ 887A607F2C1D037000E1A461 /* Optional+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE22C1D037000E1A461 /* Optional+Extensions.swift */; };
+ 887A60802C1D037000E1A461 /* Package+VariableDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE32C1D037000E1A461 /* Package+VariableDataProvider.swift */; };
+ 887A60812C1D037000E1A461 /* PaywallData+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE42C1D037000E1A461 /* PaywallData+Default.swift */; };
+ 887A60822C1D037000E1A461 /* PreviewHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE52C1D037000E1A461 /* PreviewHelpers.swift */; };
+ 887A60832C1D037000E1A461 /* VersionDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE62C1D037000E1A461 /* VersionDetector.swift */; };
+ 887A60842C1D037000E1A461 /* ConsistentPackageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE82C1D037000E1A461 /* ConsistentPackageContentView.swift */; };
+ 887A60852C1D037000E1A461 /* FitToAspectRatio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FE92C1D037000E1A461 /* FitToAspectRatio.swift */; };
+ 887A60862C1D037000E1A461 /* FooterHidingModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FEA2C1D037000E1A461 /* FooterHidingModifier.swift */; };
+ 887A60872C1D037000E1A461 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FEB2C1D037000E1A461 /* ViewExtensions.swift */; };
+ 887A60882C1D037000E1A461 /* MockPurchases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FED2C1D037000E1A461 /* MockPurchases.swift */; };
+ 887A60892C1D037000E1A461 /* PaywallPurchasesType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FEE2C1D037000E1A461 /* PaywallPurchasesType.swift */; };
+ 887A608A2C1D037000E1A461 /* PurchaseHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FEF2C1D037000E1A461 /* PurchaseHandler.swift */; };
+ 887A608B2C1D037000E1A461 /* PurchaseHandler+TestData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A5FF02C1D037000E1A461 /* PurchaseHandler+TestData.swift */; };
+ 887A608C2C1D037000E1A461 /* background.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FF22C1D037000E1A461 /* background.jpg */; };
+ 887A608D2C1D037000E1A461 /* icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FF32C1D037000E1A461 /* icons.xcassets */; };
+ 887A608E2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FF52C1D037000E1A461 /* Localizable.strings */; };
+ 887A608F2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FF72C1D037000E1A461 /* Localizable.strings */; };
+ 887A60902C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FF92C1D037000E1A461 /* Localizable.strings */; };
+ 887A60912C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FFB2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60922C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FFD2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60932C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A5FFF2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60942C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60012C1D037000E1A461 /* Localizable.strings */; };
+ 887A60952C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60032C1D037000E1A461 /* Localizable.strings */; };
+ 887A60962C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60052C1D037000E1A461 /* Localizable.strings */; };
+ 887A60972C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60072C1D037000E1A461 /* Localizable.strings */; };
+ 887A60982C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60092C1D037000E1A461 /* Localizable.strings */; };
+ 887A60992C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A600B2C1D037000E1A461 /* Localizable.strings */; };
+ 887A609A2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A600D2C1D037000E1A461 /* Localizable.strings */; };
+ 887A609B2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A600F2C1D037000E1A461 /* Localizable.strings */; };
+ 887A609C2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60112C1D037000E1A461 /* Localizable.strings */; };
+ 887A609D2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60132C1D037000E1A461 /* Localizable.strings */; };
+ 887A609E2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60152C1D037000E1A461 /* Localizable.strings */; };
+ 887A609F2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60172C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A02C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60192C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A12C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A601B2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A22C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A601D2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A32C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A601F2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A42C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60212C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A52C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60232C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A62C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60252C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A72C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60272C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A82C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60292C1D037000E1A461 /* Localizable.strings */; };
+ 887A60A92C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A602B2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AA2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A602D2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AB2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A602F2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AC2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60312C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AD2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60332C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AE2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60352C1D037000E1A461 /* Localizable.strings */; };
+ 887A60AF2C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60372C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B02C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60392C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B12C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A603B2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B22C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A603D2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B32C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A603F2C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B42C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60412C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B52C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60432C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B62C1D037000E1A461 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887A60452C1D037000E1A461 /* Localizable.strings */; };
+ 887A60B72C1D037000E1A461 /* WatchTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60472C1D037000E1A461 /* WatchTemplateView.swift */; };
+ 887A60B82C1D037000E1A461 /* Template1View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60492C1D037000E1A461 /* Template1View.swift */; };
+ 887A60B92C1D037000E1A461 /* Template2View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A604A2C1D037000E1A461 /* Template2View.swift */; };
+ 887A60BA2C1D037000E1A461 /* Template3View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A604B2C1D037000E1A461 /* Template3View.swift */; };
+ 887A60BB2C1D037000E1A461 /* Template4View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A604C2C1D037000E1A461 /* Template4View.swift */; };
+ 887A60BC2C1D037000E1A461 /* Template5View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A604D2C1D037000E1A461 /* Template5View.swift */; };
+ 887A60BD2C1D037000E1A461 /* TemplateViewType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A604E2C1D037000E1A461 /* TemplateViewType.swift */; };
+ 887A60BE2C1D037000E1A461 /* PaywallFooterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60502C1D037000E1A461 /* PaywallFooterViewController.swift */; };
+ 887A60BF2C1D037000E1A461 /* PaywallViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60512C1D037000E1A461 /* PaywallViewController.swift */; };
+ 887A60C02C1D037000E1A461 /* AsyncButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60532C1D037000E1A461 /* AsyncButton.swift */; };
+ 887A60C12C1D037000E1A461 /* DebugErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60542C1D037000E1A461 /* DebugErrorView.swift */; };
+ 887A60C22C1D037000E1A461 /* ErrorDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60552C1D037000E1A461 /* ErrorDisplay.swift */; };
+ 887A60C32C1D037000E1A461 /* FooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60562C1D037000E1A461 /* FooterView.swift */; };
+ 887A60C42C1D037000E1A461 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60572C1D037000E1A461 /* IconView.swift */; };
+ 887A60C52C1D037000E1A461 /* IntroEligibilityStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60582C1D037000E1A461 /* IntroEligibilityStateView.swift */; };
+ 887A60C62C1D037000E1A461 /* LoadingPaywallView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60592C1D037000E1A461 /* LoadingPaywallView.swift */; };
+ 887A60C72C1D037000E1A461 /* PackageButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A605A2C1D037000E1A461 /* PackageButtonStyle.swift */; };
+ 887A60C82C1D037000E1A461 /* ProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A605B2C1D037000E1A461 /* ProgressView.swift */; };
+ 887A60C92C1D037000E1A461 /* PurchaseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A605C2C1D037000E1A461 /* PurchaseButton.swift */; };
+ 887A60CA2C1D037000E1A461 /* RemoteImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A605D2C1D037000E1A461 /* RemoteImage.swift */; };
+ 887A60CB2C1D037000E1A461 /* TemplateBackgroundImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A605E2C1D037000E1A461 /* TemplateBackgroundImageView.swift */; };
+ 887A60CC2C1D037000E1A461 /* PaywallFontProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60602C1D037000E1A461 /* PaywallFontProvider.swift */; };
+ 887A60CD2C1D037000E1A461 /* PaywallView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60612C1D037000E1A461 /* PaywallView.swift */; };
+ 887A60CE2C1D037000E1A461 /* View+PresentPaywall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60622C1D037000E1A461 /* View+PresentPaywall.swift */; };
+ 887A60CF2C1D037000E1A461 /* View+PresentPaywallFooter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60632C1D037000E1A461 /* View+PresentPaywallFooter.swift */; };
+ 887A60D02C1D037000E1A461 /* View+PurchaseRestoreCompleted.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A60642C1D037000E1A461 /* View+PurchaseRestoreCompleted.swift */; };
+ 887A632B2C1D177800E1A461 /* LocalizedAlertErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61282C1D168B00E1A461 /* LocalizedAlertErrorTests.swift */; };
+ 887A632C2C1D177800E1A461 /* PackageVariablesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61292C1D168B00E1A461 /* PackageVariablesTests.swift */; };
+ 887A632D2C1D177800E1A461 /* PaywallDataValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A612A2C1D168B00E1A461 /* PaywallDataValidationTests.swift */; };
+ 887A632E2C1D177800E1A461 /* TemplateViewConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A612B2C1D168B00E1A461 /* TemplateViewConfigurationTests.swift */; };
+ 887A632F2C1D177800E1A461 /* VariablesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A612C2C1D168B00E1A461 /* VariablesTests.swift */; };
+ 887A63302C1D177800E1A461 /* AsyncTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A612E2C1D168B00E1A461 /* AsyncTestHelpers.swift */; };
+ 887A63312C1D177800E1A461 /* AvailabilityChecks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A612F2C1D168B00E1A461 /* AvailabilityChecks.swift */; };
+ 887A63322C1D177800E1A461 /* CurrentTestCaseTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61302C1D168B00E1A461 /* CurrentTestCaseTracker.swift */; };
+ 887A63332C1D177800E1A461 /* DataExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61312C1D168B00E1A461 /* DataExtensions.swift */; };
+ 887A63342C1D177800E1A461 /* ImageSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61322C1D168B00E1A461 /* ImageSnapshot.swift */; };
+ 887A63352C1D177800E1A461 /* OSVersionEquivalent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61332C1D168B00E1A461 /* OSVersionEquivalent.swift */; };
+ 887A63362C1D177800E1A461 /* SnapshotTesting+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61342C1D168B00E1A461 /* SnapshotTesting+Extensions.swift */; };
+ 887A63372C1D177800E1A461 /* TestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61352C1D168B00E1A461 /* TestCase.swift */; };
+ 887A63382C1D177800E1A461 /* PurchaseHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A61372C1D168B00E1A461 /* PurchaseHandlerTests.swift */; };
+ 887A63392C1D177800E1A461 /* OtherPaywallViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A620F2C1D168B00E1A461 /* OtherPaywallViewTests.swift */; };
+ 887A633A2C1D177800E1A461 /* PaywallViewDynamicTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62102C1D168B00E1A461 /* PaywallViewDynamicTypeTests.swift */; };
+ 887A633B2C1D177800E1A461 /* PaywallViewLocalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62112C1D168B00E1A461 /* PaywallViewLocalizationTests.swift */; };
+ 887A633C2C1D177800E1A461 /* Template1ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62122C1D168B00E1A461 /* Template1ViewTests.swift */; };
+ 887A633D2C1D177800E1A461 /* Template2ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62132C1D168B00E1A461 /* Template2ViewTests.swift */; };
+ 887A633E2C1D177800E1A461 /* Template3ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62142C1D168B00E1A461 /* Template3ViewTests.swift */; };
+ 887A633F2C1D177800E1A461 /* Template4ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62152C1D168B00E1A461 /* Template4ViewTests.swift */; };
+ 887A63402C1D177800E1A461 /* Template5ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62162C1D168B00E1A461 /* Template5ViewTests.swift */; };
+ 887A63412C1D177800E1A461 /* BaseSnapshotTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A621D2C1D168B00E1A461 /* BaseSnapshotTest.swift */; };
+ 887A63422C1D177800E1A461 /* ImageLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A621E2C1D168B00E1A461 /* ImageLoaderTests.swift */; };
+ 887A63432C1D177800E1A461 /* LocalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A621F2C1D168B00E1A461 /* LocalizationTests.swift */; };
+ 887A63442C1D177800E1A461 /* PaywallFooterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62202C1D168B00E1A461 /* PaywallFooterTests.swift */; };
+ 887A63452C1D177800E1A461 /* PaywallViewEventsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62212C1D168B00E1A461 /* PaywallViewEventsTests.swift */; };
+ 887A63462C1D177800E1A461 /* PresentIfNeededTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62222C1D168B00E1A461 /* PresentIfNeededTests.swift */; };
+ 887A63472C1D177800E1A461 /* PurchaseCompletedHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887A62232C1D168B00E1A461 /* PurchaseCompletedHandlerTests.swift */; };
+ 887A634A2C1D17EF00E1A461 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = 887A63492C1D17EF00E1A461 /* Nimble */; };
+ 887A634C2C1D17EF00E1A461 /* OHHTTPStubs in Frameworks */ = {isa = PBXBuildFile; productRef = 887A634B2C1D17EF00E1A461 /* OHHTTPStubs */; };
+ 887A634E2C1D17EF00E1A461 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 887A634D2C1D17EF00E1A461 /* OHHTTPStubsSwift */; };
+ 887A63502C1D17EF00E1A461 /* SnapshotTesting in Frameworks */ = {isa = PBXBuildFile; productRef = 887A634F2C1D17EF00E1A461 /* SnapshotTesting */; };
887E7B592C13CD2C002977DE /* PurchasesAreCompletedBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887E7B582C13CD2C002977DE /* PurchasesAreCompletedBy.swift */; };
+ 88DE93E12C211CBC0086B6D8 /* RevenueCat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC5621624EC63420031F69B /* RevenueCat.framework */; };
+ 88DE93E22C211CBC0086B6D8 /* RevenueCat.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC5621624EC63420031F69B /* RevenueCat.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
9A65DFDE258AD60A00DE00B0 /* LogIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A65DFDD258AD60A00DE00B0 /* LogIntent.swift */; };
9A65E03625918B0500DE00B0 /* ConfigureStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A65E03525918B0500DE00B0 /* ConfigureStrings.swift */; };
9A65E03B25918B0900DE00B0 /* CustomerInfoStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A65E03A25918B0900DE00B0 /* CustomerInfoStrings.swift */; };
@@ -821,6 +963,13 @@
remoteGlobalIDString = 2DD778D0270E233F0079CBD4;
remoteInfo = SwiftAPITester;
};
+ 88DE93E32C211CBC0086B6D8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 352629F51F7C4B9100C04F2C /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 2DC5621524EC63420031F69B;
+ remoteInfo = RevenueCat;
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -837,6 +986,17 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 88DE93E52C211CBC0086B6D8 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 88DE93E22C211CBC0086B6D8 /* RevenueCat.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
@@ -930,7 +1090,6 @@
2DEAC2DC26EFE46E006914ED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
2DEAC2E526EFE470006914ED /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
2DEAC2EA26EFE470006914ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 2DEC0CFB24A2A1B100B0E5BB /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; };
33FFC8744F2BAE7BD8889A4C /* Pods_RevenueCat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RevenueCat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
350A1B84226E3E8700CCA10F /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
35109DAA2BC6E436001030C8 /* BackendPostDiagnosticsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackendPostDiagnosticsTests.swift; sourceTree = ""; };
@@ -1365,6 +1524,164 @@
57FFD2502922DBED00A9A878 /* MockStoreTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockStoreTransaction.swift; sourceTree = ""; };
80E80EF026970DC3008F245A /* ReceiptFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiptFetcher.swift; sourceTree = ""; };
84C3F1AC1D7E1E64341D3936 /* Pods_RevenueCat_PurchasesTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RevenueCat_PurchasesTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 887A5FB42C1D024300E1A461 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; };
+ 887A5FBA2C1D036200E1A461 /* RevenueCatUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RevenueCatUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 887A5FBC2C1D036200E1A461 /* RevenueCatUIDev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RevenueCatUIDev.h; sourceTree = ""; };
+ 887A5FC72C1D037000E1A461 /* PaywallError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallError.swift; sourceTree = ""; };
+ 887A5FC82C1D037000E1A461 /* TemplateError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateError.swift; sourceTree = ""; };
+ 887A5FCA2C1D037000E1A461 /* IntroEligibilityViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntroEligibilityViewModel.swift; sourceTree = ""; };
+ 887A5FCB2C1D037000E1A461 /* TrialOrIntroEligibilityChecker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrialOrIntroEligibilityChecker.swift; sourceTree = ""; };
+ 887A5FCC2C1D037000E1A461 /* TrialOrIntroEligibilityChecker+TestData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TrialOrIntroEligibilityChecker+TestData.swift"; sourceTree = ""; };
+ 887A5FCE2C1D037000E1A461 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; };
+ 887A5FCF2C1D037000E1A461 /* Localization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Localization.swift; sourceTree = ""; };
+ 887A5FD02C1D037000E1A461 /* LocalizedAlertError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizedAlertError.swift; sourceTree = ""; };
+ 887A5FD12C1D037000E1A461 /* PaywallData+Validation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PaywallData+Validation.swift"; sourceTree = ""; };
+ 887A5FD22C1D037000E1A461 /* PaywallTemplate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallTemplate.swift; sourceTree = ""; };
+ 887A5FD32C1D037000E1A461 /* PaywallViewConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallViewConfiguration.swift; sourceTree = ""; };
+ 887A5FD42C1D037000E1A461 /* PaywallViewMode+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PaywallViewMode+Extensions.swift"; sourceTree = ""; };
+ 887A5FD52C1D037000E1A461 /* ProcessedLocalizedConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProcessedLocalizedConfiguration.swift; sourceTree = ""; };
+ 887A5FD62C1D037000E1A461 /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = ""; };
+ 887A5FD72C1D037000E1A461 /* TemplateViewConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateViewConfiguration.swift; sourceTree = ""; };
+ 887A5FD82C1D037000E1A461 /* TemplateViewConfiguration+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TemplateViewConfiguration+Extensions.swift"; sourceTree = ""; };
+ 887A5FD92C1D037000E1A461 /* TemplateViewConfiguration+Images.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TemplateViewConfiguration+Images.swift"; sourceTree = ""; };
+ 887A5FDA2C1D037000E1A461 /* TestData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestData.swift; sourceTree = ""; };
+ 887A5FDB2C1D037000E1A461 /* UserInterfaceIdiom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserInterfaceIdiom.swift; sourceTree = ""; };
+ 887A5FDC2C1D037000E1A461 /* Variables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Variables.swift; sourceTree = ""; };
+ 887A5FDE2C1D037000E1A461 /* Bundle+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+Extensions.swift"; sourceTree = ""; };
+ 887A5FDF2C1D037000E1A461 /* ColorInformation+MultiScheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ColorInformation+MultiScheme.swift"; sourceTree = ""; };
+ 887A5FE02C1D037000E1A461 /* ImageLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageLoader.swift; sourceTree = ""; };
+ 887A5FE12C1D037000E1A461 /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; };
+ 887A5FE22C1D037000E1A461 /* Optional+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Optional+Extensions.swift"; sourceTree = ""; };
+ 887A5FE32C1D037000E1A461 /* Package+VariableDataProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Package+VariableDataProvider.swift"; sourceTree = ""; };
+ 887A5FE42C1D037000E1A461 /* PaywallData+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PaywallData+Default.swift"; sourceTree = ""; };
+ 887A5FE52C1D037000E1A461 /* PreviewHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreviewHelpers.swift; sourceTree = ""; };
+ 887A5FE62C1D037000E1A461 /* VersionDetector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionDetector.swift; sourceTree = ""; };
+ 887A5FE82C1D037000E1A461 /* ConsistentPackageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConsistentPackageContentView.swift; sourceTree = ""; };
+ 887A5FE92C1D037000E1A461 /* FitToAspectRatio.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FitToAspectRatio.swift; sourceTree = ""; };
+ 887A5FEA2C1D037000E1A461 /* FooterHidingModifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FooterHidingModifier.swift; sourceTree = ""; };
+ 887A5FEB2C1D037000E1A461 /* ViewExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = ""; };
+ 887A5FED2C1D037000E1A461 /* MockPurchases.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPurchases.swift; sourceTree = ""; };
+ 887A5FEE2C1D037000E1A461 /* PaywallPurchasesType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallPurchasesType.swift; sourceTree = ""; };
+ 887A5FEF2C1D037000E1A461 /* PurchaseHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseHandler.swift; sourceTree = ""; };
+ 887A5FF02C1D037000E1A461 /* PurchaseHandler+TestData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PurchaseHandler+TestData.swift"; sourceTree = ""; };
+ 887A5FF22C1D037000E1A461 /* background.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = background.jpg; sourceTree = ""; };
+ 887A5FF32C1D037000E1A461 /* icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = icons.xcassets; sourceTree = ""; };
+ 887A5FF42C1D037000E1A461 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; };
+ 887A5FF62C1D037000E1A461 /* zh_Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hans; path = zh_Hans.lproj/Localizable.strings; sourceTree = ""; };
+ 887A5FF82C1D037000E1A461 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = ""; };
+ 887A5FFA2C1D037000E1A461 /* en_AU */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_AU; path = en_AU.lproj/Localizable.strings; sourceTree = ""; };
+ 887A5FFC2C1D037000E1A461 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
+ 887A5FFE2C1D037000E1A461 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60002C1D037000E1A461 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60022C1D037000E1A461 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60042C1D037000E1A461 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60062C1D037000E1A461 /* es_419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_419; path = es_419.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60082C1D037000E1A461 /* en_US */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_US; path = en_US.lproj/Localizable.strings; sourceTree = ""; };
+ 887A600A2C1D037000E1A461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_BR; path = pt_BR.lproj/Localizable.strings; sourceTree = ""; };
+ 887A600C2C1D037000E1A461 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; };
+ 887A600E2C1D037000E1A461 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60102C1D037000E1A461 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60122C1D037000E1A461 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60142C1D037000E1A461 /* kk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = kk; path = kk.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60162C1D037000E1A461 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_PT; path = pt_PT.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60182C1D037000E1A461 /* ms */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ms; path = ms.lproj/Localizable.strings; sourceTree = ""; };
+ 887A601A2C1D037000E1A461 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; };
+ 887A601C2C1D037000E1A461 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; };
+ 887A601E2C1D037000E1A461 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60202C1D037000E1A461 /* zh_Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hant; path = zh_Hant.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60222C1D037000E1A461 /* en_CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_CA; path = en_CA.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60242C1D037000E1A461 /* no */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = no; path = no.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60262C1D037000E1A461 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60282C1D037000E1A461 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; };
+ 887A602A2C1D037000E1A461 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; };
+ 887A602C2C1D037000E1A461 /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_GB; path = en_GB.lproj/Localizable.strings; sourceTree = ""; };
+ 887A602E2C1D037000E1A461 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60302C1D037000E1A461 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60322C1D037000E1A461 /* fr_CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr_CA; path = fr_CA.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60342C1D037000E1A461 /* es_ES */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_ES; path = es_ES.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60362C1D037000E1A461 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60382C1D037000E1A461 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; };
+ 887A603A2C1D037000E1A461 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; };
+ 887A603C2C1D037000E1A461 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/Localizable.strings; sourceTree = ""; };
+ 887A603E2C1D037000E1A461 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60402C1D037000E1A461 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60422C1D037000E1A461 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60442C1D037000E1A461 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; };
+ 887A60472C1D037000E1A461 /* WatchTemplateView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchTemplateView.swift; sourceTree = ""; };
+ 887A60492C1D037000E1A461 /* Template1View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template1View.swift; sourceTree = ""; };
+ 887A604A2C1D037000E1A461 /* Template2View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template2View.swift; sourceTree = ""; };
+ 887A604B2C1D037000E1A461 /* Template3View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template3View.swift; sourceTree = ""; };
+ 887A604C2C1D037000E1A461 /* Template4View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template4View.swift; sourceTree = ""; };
+ 887A604D2C1D037000E1A461 /* Template5View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template5View.swift; sourceTree = ""; };
+ 887A604E2C1D037000E1A461 /* TemplateViewType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateViewType.swift; sourceTree = ""; };
+ 887A60502C1D037000E1A461 /* PaywallFooterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallFooterViewController.swift; sourceTree = ""; };
+ 887A60512C1D037000E1A461 /* PaywallViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallViewController.swift; sourceTree = ""; };
+ 887A60532C1D037000E1A461 /* AsyncButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncButton.swift; sourceTree = ""; };
+ 887A60542C1D037000E1A461 /* DebugErrorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugErrorView.swift; sourceTree = ""; };
+ 887A60552C1D037000E1A461 /* ErrorDisplay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorDisplay.swift; sourceTree = ""; };
+ 887A60562C1D037000E1A461 /* FooterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FooterView.swift; sourceTree = ""; };
+ 887A60572C1D037000E1A461 /* IconView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconView.swift; sourceTree = ""; };
+ 887A60582C1D037000E1A461 /* IntroEligibilityStateView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntroEligibilityStateView.swift; sourceTree = ""; };
+ 887A60592C1D037000E1A461 /* LoadingPaywallView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadingPaywallView.swift; sourceTree = ""; };
+ 887A605A2C1D037000E1A461 /* PackageButtonStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PackageButtonStyle.swift; sourceTree = ""; };
+ 887A605B2C1D037000E1A461 /* ProgressView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgressView.swift; sourceTree = ""; };
+ 887A605C2C1D037000E1A461 /* PurchaseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseButton.swift; sourceTree = ""; };
+ 887A605D2C1D037000E1A461 /* RemoteImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteImage.swift; sourceTree = ""; };
+ 887A605E2C1D037000E1A461 /* TemplateBackgroundImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateBackgroundImageView.swift; sourceTree = ""; };
+ 887A60602C1D037000E1A461 /* PaywallFontProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallFontProvider.swift; sourceTree = ""; };
+ 887A60612C1D037000E1A461 /* PaywallView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallView.swift; sourceTree = ""; };
+ 887A60622C1D037000E1A461 /* View+PresentPaywall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+PresentPaywall.swift"; sourceTree = ""; };
+ 887A60632C1D037000E1A461 /* View+PresentPaywallFooter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+PresentPaywallFooter.swift"; sourceTree = ""; };
+ 887A60642C1D037000E1A461 /* View+PurchaseRestoreCompleted.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+PurchaseRestoreCompleted.swift"; sourceTree = ""; };
+ 887A611A2C1D168B00E1A461 /* testUnrecognizedIconsGeneratesDefaultPaywall-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testUnrecognizedIconsGeneratesDefaultPaywall-watchOS.1.json"; sourceTree = ""; };
+ 887A611B2C1D168B00E1A461 /* testUnrecognizedIconsGeneratesDefaultPaywall.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testUnrecognizedIconsGeneratesDefaultPaywall.1.json; sourceTree = ""; };
+ 887A611C2C1D168B00E1A461 /* testUnrecognizedTemplateNameGeneratesDefaultPaywall-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testUnrecognizedTemplateNameGeneratesDefaultPaywall-watchOS.1.json"; sourceTree = ""; };
+ 887A611D2C1D168B00E1A461 /* testUnrecognizedTemplateNameGeneratesDefaultPaywall.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testUnrecognizedTemplateNameGeneratesDefaultPaywall.1.json; sourceTree = ""; };
+ 887A611E2C1D168B00E1A461 /* testUnrecognizedVariableGeneratesDefaultPaywall-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testUnrecognizedVariableGeneratesDefaultPaywall-watchOS.1.json"; sourceTree = ""; };
+ 887A611F2C1D168B00E1A461 /* testUnrecognizedVariableGeneratesDefaultPaywall.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testUnrecognizedVariableGeneratesDefaultPaywall.1.json; sourceTree = ""; };
+ 887A61202C1D168B00E1A461 /* testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall-watchOS.1.json"; sourceTree = ""; };
+ 887A61212C1D168B00E1A461 /* testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall.1.json; sourceTree = ""; };
+ 887A61222C1D168B00E1A461 /* testValidateMissingPaywall-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testValidateMissingPaywall-watchOS.1.json"; sourceTree = ""; };
+ 887A61232C1D168B00E1A461 /* testValidateMissingPaywall.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testValidateMissingPaywall.1.json; sourceTree = ""; };
+ 887A61242C1D168B00E1A461 /* testValidateMissingPaywallWithSpanishLocalization-watchOS.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "testValidateMissingPaywallWithSpanishLocalization-watchOS.1.json"; sourceTree = ""; };
+ 887A61252C1D168B00E1A461 /* testValidateMissingPaywallWithSpanishLocalization.1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testValidateMissingPaywallWithSpanishLocalization.1.json; sourceTree = ""; };
+ 887A61282C1D168B00E1A461 /* LocalizedAlertErrorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizedAlertErrorTests.swift; sourceTree = ""; };
+ 887A61292C1D168B00E1A461 /* PackageVariablesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PackageVariablesTests.swift; sourceTree = ""; };
+ 887A612A2C1D168B00E1A461 /* PaywallDataValidationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallDataValidationTests.swift; sourceTree = ""; };
+ 887A612B2C1D168B00E1A461 /* TemplateViewConfigurationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateViewConfigurationTests.swift; sourceTree = ""; };
+ 887A612C2C1D168B00E1A461 /* VariablesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VariablesTests.swift; sourceTree = ""; };
+ 887A612E2C1D168B00E1A461 /* AsyncTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncTestHelpers.swift; sourceTree = ""; };
+ 887A612F2C1D168B00E1A461 /* AvailabilityChecks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AvailabilityChecks.swift; sourceTree = ""; };
+ 887A61302C1D168B00E1A461 /* CurrentTestCaseTracker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrentTestCaseTracker.swift; sourceTree = ""; };
+ 887A61312C1D168B00E1A461 /* DataExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataExtensions.swift; sourceTree = ""; };
+ 887A61322C1D168B00E1A461 /* ImageSnapshot.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageSnapshot.swift; sourceTree = ""; };
+ 887A61332C1D168B00E1A461 /* OSVersionEquivalent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OSVersionEquivalent.swift; sourceTree = ""; };
+ 887A61342C1D168B00E1A461 /* SnapshotTesting+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SnapshotTesting+Extensions.swift"; sourceTree = ""; };
+ 887A61352C1D168B00E1A461 /* TestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestCase.swift; sourceTree = ""; };
+ 887A61372C1D168B00E1A461 /* PurchaseHandlerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseHandlerTests.swift; sourceTree = ""; };
+ 887A61392C1D168B00E1A461 /* background.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = background.jpg; sourceTree = ""; };
+ 887A613A2C1D168B00E1A461 /* header.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = header.jpg; sourceTree = ""; };
+ 887A620F2C1D168B00E1A461 /* OtherPaywallViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OtherPaywallViewTests.swift; sourceTree = ""; };
+ 887A62102C1D168B00E1A461 /* PaywallViewDynamicTypeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallViewDynamicTypeTests.swift; sourceTree = ""; };
+ 887A62112C1D168B00E1A461 /* PaywallViewLocalizationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallViewLocalizationTests.swift; sourceTree = ""; };
+ 887A62122C1D168B00E1A461 /* Template1ViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template1ViewTests.swift; sourceTree = ""; };
+ 887A62132C1D168B00E1A461 /* Template2ViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template2ViewTests.swift; sourceTree = ""; };
+ 887A62142C1D168B00E1A461 /* Template3ViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template3ViewTests.swift; sourceTree = ""; };
+ 887A62152C1D168B00E1A461 /* Template4ViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template4ViewTests.swift; sourceTree = ""; };
+ 887A62162C1D168B00E1A461 /* Template5ViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Template5ViewTests.swift; sourceTree = ""; };
+ 887A62182C1D168B00E1A461 /* CI-RevenueCatUI.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "CI-RevenueCatUI.xctestplan"; sourceTree = ""; };
+ 887A62192C1D168B00E1A461 /* CI-Snapshots.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "CI-Snapshots.xctestplan"; sourceTree = ""; };
+ 887A621A2C1D168B00E1A461 /* RevenueCatUI-UnitTests.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "RevenueCatUI-UnitTests.xctestplan"; sourceTree = ""; };
+ 887A621B2C1D168B00E1A461 /* RevenueCatUI.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RevenueCatUI.xctestplan; sourceTree = ""; };
+ 887A621D2C1D168B00E1A461 /* BaseSnapshotTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseSnapshotTest.swift; sourceTree = ""; };
+ 887A621E2C1D168B00E1A461 /* ImageLoaderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageLoaderTests.swift; sourceTree = ""; };
+ 887A621F2C1D168B00E1A461 /* LocalizationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationTests.swift; sourceTree = ""; };
+ 887A62202C1D168B00E1A461 /* PaywallFooterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallFooterTests.swift; sourceTree = ""; };
+ 887A62212C1D168B00E1A461 /* PaywallViewEventsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaywallViewEventsTests.swift; sourceTree = ""; };
+ 887A62222C1D168B00E1A461 /* PresentIfNeededTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentIfNeededTests.swift; sourceTree = ""; };
+ 887A62232C1D168B00E1A461 /* PurchaseCompletedHandlerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseCompletedHandlerTests.swift; sourceTree = ""; };
+ 887A63212C1D174200E1A461 /* RevenueCatUITestsDev.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RevenueCatUITestsDev.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 887A63482C1D17A200E1A461 /* RevenueCatUIDev.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = RevenueCatUIDev.xctestplan; path = RevenueCatUI/RevenueCatUIDev.xctestplan; sourceTree = SOURCE_ROOT; };
887E7B582C13CD2C002977DE /* PurchasesAreCompletedBy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchasesAreCompletedBy.swift; sourceTree = ""; };
9A65DFDD258AD60A00DE00B0 /* LogIntent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogIntent.swift; sourceTree = ""; };
9A65E03525918B0500DE00B0 /* ConfigureStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigureStrings.swift; sourceTree = ""; };
@@ -1560,6 +1877,25 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 887A5FB72C1D036200E1A461 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 88DE93E12C211CBC0086B6D8 /* RevenueCat.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 887A631E2C1D174200E1A461 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 887A63502C1D17EF00E1A461 /* SnapshotTesting in Frameworks */,
+ 887A634E2C1D17EF00E1A461 /* OHHTTPStubsSwift in Frameworks */,
+ 887A634C2C1D17EF00E1A461 /* OHHTTPStubs in Frameworks */,
+ 887A634A2C1D17EF00E1A461 /* Nimble in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -2049,12 +2385,14 @@
352629F41F7C4B9100C04F2C = {
isa = PBXGroup;
children = (
+ 887A60652C1D037000E1A461 /* RevenueCatUI */,
2DC5621724EC63420031F69B /* Sources */,
2DDE870027E5238500D8B390 /* Tests */,
+ 887A5FBB2C1D036200E1A461 /* RevenueCatUIDev */,
352629FF1F7C4B9100C04F2C /* Products */,
3530C18722653E8F00D6DF52 /* Frameworks */,
- 2DEC0CFB24A2A1B100B0E5BB /* Package.swift */,
57B530E52858F3FD00FA4E37 /* SwiftStyleGuide.swift */,
+ 887A5FB42C1D024300E1A461 /* Package.swift */,
);
sourceTree = "";
};
@@ -2070,6 +2408,8 @@
57D92C33293E4D0C00D1912A /* ReceiptParser.framework */,
5759B401296DF65D002472D5 /* ReceiptParserTests.xctest */,
4F6BEE312A27B02400CD9322 /* BackendCustomEntitlementsIntegrationTests.xctest */,
+ 887A5FBA2C1D036200E1A461 /* RevenueCatUI.framework */,
+ 887A63212C1D174200E1A461 /* RevenueCatUITestsDev.xctest */,
);
name = Products;
sourceTree = "";
@@ -2757,6 +3097,344 @@
path = Security;
sourceTree = "";
};
+ 887A5FBB2C1D036200E1A461 /* RevenueCatUIDev */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FBC2C1D036200E1A461 /* RevenueCatUIDev.h */,
+ );
+ path = RevenueCatUIDev;
+ sourceTree = "";
+ };
+ 887A5FC92C1D037000E1A461 /* Errors */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FC72C1D037000E1A461 /* PaywallError.swift */,
+ 887A5FC82C1D037000E1A461 /* TemplateError.swift */,
+ );
+ path = Errors;
+ sourceTree = "";
+ };
+ 887A5FCD2C1D037000E1A461 /* IntroEligibility */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FCA2C1D037000E1A461 /* IntroEligibilityViewModel.swift */,
+ 887A5FCB2C1D037000E1A461 /* TrialOrIntroEligibilityChecker.swift */,
+ 887A5FCC2C1D037000E1A461 /* TrialOrIntroEligibilityChecker+TestData.swift */,
+ );
+ path = IntroEligibility;
+ sourceTree = "";
+ };
+ 887A5FDD2C1D037000E1A461 /* Data */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FC92C1D037000E1A461 /* Errors */,
+ 887A5FCD2C1D037000E1A461 /* IntroEligibility */,
+ 887A5FCE2C1D037000E1A461 /* Constants.swift */,
+ 887A5FCF2C1D037000E1A461 /* Localization.swift */,
+ 887A5FD02C1D037000E1A461 /* LocalizedAlertError.swift */,
+ 887A5FD12C1D037000E1A461 /* PaywallData+Validation.swift */,
+ 887A5FD22C1D037000E1A461 /* PaywallTemplate.swift */,
+ 887A5FD32C1D037000E1A461 /* PaywallViewConfiguration.swift */,
+ 887A5FD42C1D037000E1A461 /* PaywallViewMode+Extensions.swift */,
+ 887A5FD52C1D037000E1A461 /* ProcessedLocalizedConfiguration.swift */,
+ 887A5FD62C1D037000E1A461 /* Strings.swift */,
+ 887A5FD72C1D037000E1A461 /* TemplateViewConfiguration.swift */,
+ 887A5FD82C1D037000E1A461 /* TemplateViewConfiguration+Extensions.swift */,
+ 887A5FD92C1D037000E1A461 /* TemplateViewConfiguration+Images.swift */,
+ 887A5FDA2C1D037000E1A461 /* TestData.swift */,
+ 887A5FDB2C1D037000E1A461 /* UserInterfaceIdiom.swift */,
+ 887A5FDC2C1D037000E1A461 /* Variables.swift */,
+ );
+ path = Data;
+ sourceTree = "";
+ };
+ 887A5FE72C1D037000E1A461 /* Helpers */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FDE2C1D037000E1A461 /* Bundle+Extensions.swift */,
+ 887A5FDF2C1D037000E1A461 /* ColorInformation+MultiScheme.swift */,
+ 887A5FE02C1D037000E1A461 /* ImageLoader.swift */,
+ 887A5FE12C1D037000E1A461 /* Logger.swift */,
+ 887A5FE22C1D037000E1A461 /* Optional+Extensions.swift */,
+ 887A5FE32C1D037000E1A461 /* Package+VariableDataProvider.swift */,
+ 887A5FE42C1D037000E1A461 /* PaywallData+Default.swift */,
+ 887A5FE52C1D037000E1A461 /* PreviewHelpers.swift */,
+ 887A5FE62C1D037000E1A461 /* VersionDetector.swift */,
+ );
+ path = Helpers;
+ sourceTree = "";
+ };
+ 887A5FEC2C1D037000E1A461 /* Modifiers */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FE82C1D037000E1A461 /* ConsistentPackageContentView.swift */,
+ 887A5FE92C1D037000E1A461 /* FitToAspectRatio.swift */,
+ 887A5FEA2C1D037000E1A461 /* FooterHidingModifier.swift */,
+ 887A5FEB2C1D037000E1A461 /* ViewExtensions.swift */,
+ );
+ path = Modifiers;
+ sourceTree = "";
+ };
+ 887A5FF12C1D037000E1A461 /* Purchasing */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FED2C1D037000E1A461 /* MockPurchases.swift */,
+ 887A5FEE2C1D037000E1A461 /* PaywallPurchasesType.swift */,
+ 887A5FEF2C1D037000E1A461 /* PurchaseHandler.swift */,
+ 887A5FF02C1D037000E1A461 /* PurchaseHandler+TestData.swift */,
+ );
+ path = Purchasing;
+ sourceTree = "";
+ };
+ 887A60462C1D037000E1A461 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 887A5FF22C1D037000E1A461 /* background.jpg */,
+ 887A5FF32C1D037000E1A461 /* icons.xcassets */,
+ 887A5FF52C1D037000E1A461 /* Localizable.strings */,
+ 887A5FF72C1D037000E1A461 /* Localizable.strings */,
+ 887A5FF92C1D037000E1A461 /* Localizable.strings */,
+ 887A5FFB2C1D037000E1A461 /* Localizable.strings */,
+ 887A5FFD2C1D037000E1A461 /* Localizable.strings */,
+ 887A5FFF2C1D037000E1A461 /* Localizable.strings */,
+ 887A60012C1D037000E1A461 /* Localizable.strings */,
+ 887A60032C1D037000E1A461 /* Localizable.strings */,
+ 887A60052C1D037000E1A461 /* Localizable.strings */,
+ 887A60072C1D037000E1A461 /* Localizable.strings */,
+ 887A60092C1D037000E1A461 /* Localizable.strings */,
+ 887A600B2C1D037000E1A461 /* Localizable.strings */,
+ 887A600D2C1D037000E1A461 /* Localizable.strings */,
+ 887A600F2C1D037000E1A461 /* Localizable.strings */,
+ 887A60112C1D037000E1A461 /* Localizable.strings */,
+ 887A60132C1D037000E1A461 /* Localizable.strings */,
+ 887A60152C1D037000E1A461 /* Localizable.strings */,
+ 887A60172C1D037000E1A461 /* Localizable.strings */,
+ 887A60192C1D037000E1A461 /* Localizable.strings */,
+ 887A601B2C1D037000E1A461 /* Localizable.strings */,
+ 887A601D2C1D037000E1A461 /* Localizable.strings */,
+ 887A601F2C1D037000E1A461 /* Localizable.strings */,
+ 887A60212C1D037000E1A461 /* Localizable.strings */,
+ 887A60232C1D037000E1A461 /* Localizable.strings */,
+ 887A60252C1D037000E1A461 /* Localizable.strings */,
+ 887A60272C1D037000E1A461 /* Localizable.strings */,
+ 887A60292C1D037000E1A461 /* Localizable.strings */,
+ 887A602B2C1D037000E1A461 /* Localizable.strings */,
+ 887A602D2C1D037000E1A461 /* Localizable.strings */,
+ 887A602F2C1D037000E1A461 /* Localizable.strings */,
+ 887A60312C1D037000E1A461 /* Localizable.strings */,
+ 887A60332C1D037000E1A461 /* Localizable.strings */,
+ 887A60352C1D037000E1A461 /* Localizable.strings */,
+ 887A60372C1D037000E1A461 /* Localizable.strings */,
+ 887A60392C1D037000E1A461 /* Localizable.strings */,
+ 887A603B2C1D037000E1A461 /* Localizable.strings */,
+ 887A603D2C1D037000E1A461 /* Localizable.strings */,
+ 887A603F2C1D037000E1A461 /* Localizable.strings */,
+ 887A60412C1D037000E1A461 /* Localizable.strings */,
+ 887A60432C1D037000E1A461 /* Localizable.strings */,
+ 887A60452C1D037000E1A461 /* Localizable.strings */,
+ );
+ path = Resources;
+ sourceTree = "";
+ };
+ 887A60482C1D037000E1A461 /* Other platforms */ = {
+ isa = PBXGroup;
+ children = (
+ 887A60472C1D037000E1A461 /* WatchTemplateView.swift */,
+ );
+ path = "Other platforms";
+ sourceTree = "";
+ };
+ 887A604F2C1D037000E1A461 /* Templates */ = {
+ isa = PBXGroup;
+ children = (
+ 887A60482C1D037000E1A461 /* Other platforms */,
+ 887A60492C1D037000E1A461 /* Template1View.swift */,
+ 887A604A2C1D037000E1A461 /* Template2View.swift */,
+ 887A604B2C1D037000E1A461 /* Template3View.swift */,
+ 887A604C2C1D037000E1A461 /* Template4View.swift */,
+ 887A604D2C1D037000E1A461 /* Template5View.swift */,
+ 887A604E2C1D037000E1A461 /* TemplateViewType.swift */,
+ );
+ path = Templates;
+ sourceTree = "";
+ };
+ 887A60522C1D037000E1A461 /* UIKit */ = {
+ isa = PBXGroup;
+ children = (
+ 887A60502C1D037000E1A461 /* PaywallFooterViewController.swift */,
+ 887A60512C1D037000E1A461 /* PaywallViewController.swift */,
+ );
+ path = UIKit;
+ sourceTree = "";
+ };
+ 887A605F2C1D037000E1A461 /* Views */ = {
+ isa = PBXGroup;
+ children = (
+ 887A60532C1D037000E1A461 /* AsyncButton.swift */,
+ 887A60542C1D037000E1A461 /* DebugErrorView.swift */,
+ 887A60552C1D037000E1A461 /* ErrorDisplay.swift */,
+ 887A60562C1D037000E1A461 /* FooterView.swift */,
+ 887A60572C1D037000E1A461 /* IconView.swift */,
+ 887A60582C1D037000E1A461 /* IntroEligibilityStateView.swift */,
+ 887A60592C1D037000E1A461 /* LoadingPaywallView.swift */,
+ 887A605A2C1D037000E1A461 /* PackageButtonStyle.swift */,
+ 887A605B2C1D037000E1A461 /* ProgressView.swift */,
+ 887A605C2C1D037000E1A461 /* PurchaseButton.swift */,
+ 887A605D2C1D037000E1A461 /* RemoteImage.swift */,
+ 887A605E2C1D037000E1A461 /* TemplateBackgroundImageView.swift */,
+ );
+ path = Views;
+ sourceTree = "";
+ };
+ 887A60652C1D037000E1A461 /* RevenueCatUI */ = {
+ isa = PBXGroup;
+ children = (
+ 887A62242C1D168B00E1A461 /* RevenueCatUITests */,
+ 887A5FDD2C1D037000E1A461 /* Data */,
+ 887A5FE72C1D037000E1A461 /* Helpers */,
+ 887A5FEC2C1D037000E1A461 /* Modifiers */,
+ 887A5FF12C1D037000E1A461 /* Purchasing */,
+ 887A60462C1D037000E1A461 /* Resources */,
+ 887A604F2C1D037000E1A461 /* Templates */,
+ 887A60522C1D037000E1A461 /* UIKit */,
+ 887A605F2C1D037000E1A461 /* Views */,
+ 887A60602C1D037000E1A461 /* PaywallFontProvider.swift */,
+ 887A60612C1D037000E1A461 /* PaywallView.swift */,
+ 887A60622C1D037000E1A461 /* View+PresentPaywall.swift */,
+ 887A60632C1D037000E1A461 /* View+PresentPaywallFooter.swift */,
+ 887A60642C1D037000E1A461 /* View+PurchaseRestoreCompleted.swift */,
+ );
+ path = RevenueCatUI;
+ sourceTree = "";
+ };
+ 887A61262C1D168B00E1A461 /* PaywallDataValidationTests */ = {
+ isa = PBXGroup;
+ children = (
+ 887A611A2C1D168B00E1A461 /* testUnrecognizedIconsGeneratesDefaultPaywall-watchOS.1.json */,
+ 887A611B2C1D168B00E1A461 /* testUnrecognizedIconsGeneratesDefaultPaywall.1.json */,
+ 887A611C2C1D168B00E1A461 /* testUnrecognizedTemplateNameGeneratesDefaultPaywall-watchOS.1.json */,
+ 887A611D2C1D168B00E1A461 /* testUnrecognizedTemplateNameGeneratesDefaultPaywall.1.json */,
+ 887A611E2C1D168B00E1A461 /* testUnrecognizedVariableGeneratesDefaultPaywall-watchOS.1.json */,
+ 887A611F2C1D168B00E1A461 /* testUnrecognizedVariableGeneratesDefaultPaywall.1.json */,
+ 887A61202C1D168B00E1A461 /* testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall-watchOS.1.json */,
+ 887A61212C1D168B00E1A461 /* testUnrecognizedVariableInFeaturesGeneratesDefaultPaywall.1.json */,
+ 887A61222C1D168B00E1A461 /* testValidateMissingPaywall-watchOS.1.json */,
+ 887A61232C1D168B00E1A461 /* testValidateMissingPaywall.1.json */,
+ 887A61242C1D168B00E1A461 /* testValidateMissingPaywallWithSpanishLocalization-watchOS.1.json */,
+ 887A61252C1D168B00E1A461 /* testValidateMissingPaywallWithSpanishLocalization.1.json */,
+ );
+ path = PaywallDataValidationTests;
+ sourceTree = "";
+ };
+ 887A61272C1D168B00E1A461 /* __Snapshots__ */ = {
+ isa = PBXGroup;
+ children = (
+ 887A61262C1D168B00E1A461 /* PaywallDataValidationTests */,
+ );
+ path = __Snapshots__;
+ sourceTree = "";
+ };
+ 887A612D2C1D168B00E1A461 /* Data */ = {
+ isa = PBXGroup;
+ children = (
+ 887A61272C1D168B00E1A461 /* __Snapshots__ */,
+ 887A61282C1D168B00E1A461 /* LocalizedAlertErrorTests.swift */,
+ 887A61292C1D168B00E1A461 /* PackageVariablesTests.swift */,
+ 887A612A2C1D168B00E1A461 /* PaywallDataValidationTests.swift */,
+ 887A612B2C1D168B00E1A461 /* TemplateViewConfigurationTests.swift */,
+ 887A612C2C1D168B00E1A461 /* VariablesTests.swift */,
+ );
+ path = Data;
+ sourceTree = "";
+ };
+ 887A61362C1D168B00E1A461 /* Helpers */ = {
+ isa = PBXGroup;
+ children = (
+ 887A612E2C1D168B00E1A461 /* AsyncTestHelpers.swift */,
+ 887A612F2C1D168B00E1A461 /* AvailabilityChecks.swift */,
+ 887A61302C1D168B00E1A461 /* CurrentTestCaseTracker.swift */,
+ 887A61312C1D168B00E1A461 /* DataExtensions.swift */,
+ 887A61322C1D168B00E1A461 /* ImageSnapshot.swift */,
+ 887A61332C1D168B00E1A461 /* OSVersionEquivalent.swift */,
+ 887A61342C1D168B00E1A461 /* SnapshotTesting+Extensions.swift */,
+ 887A61352C1D168B00E1A461 /* TestCase.swift */,
+ );
+ path = Helpers;
+ sourceTree = "";
+ };
+ 887A61382C1D168B00E1A461 /* Purchasing */ = {
+ isa = PBXGroup;
+ children = (
+ 887A61372C1D168B00E1A461 /* PurchaseHandlerTests.swift */,
+ );
+ path = Purchasing;
+ sourceTree = "";
+ };
+ 887A613B2C1D168B00E1A461 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 887A61392C1D168B00E1A461 /* background.jpg */,
+ 887A613A2C1D168B00E1A461 /* header.jpg */,
+ );
+ path = Resources;
+ sourceTree = "";
+ };
+ 887A620E2C1D168B00E1A461 /* __Snapshots__ */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ path = __Snapshots__;
+ sourceTree = "";
+ };
+ 887A62172C1D168B00E1A461 /* Templates */ = {
+ isa = PBXGroup;
+ children = (
+ 887A620E2C1D168B00E1A461 /* __Snapshots__ */,
+ 887A620F2C1D168B00E1A461 /* OtherPaywallViewTests.swift */,
+ 887A62102C1D168B00E1A461 /* PaywallViewDynamicTypeTests.swift */,
+ 887A62112C1D168B00E1A461 /* PaywallViewLocalizationTests.swift */,
+ 887A62122C1D168B00E1A461 /* Template1ViewTests.swift */,
+ 887A62132C1D168B00E1A461 /* Template2ViewTests.swift */,
+ 887A62142C1D168B00E1A461 /* Template3ViewTests.swift */,
+ 887A62152C1D168B00E1A461 /* Template4ViewTests.swift */,
+ 887A62162C1D168B00E1A461 /* Template5ViewTests.swift */,
+ );
+ path = Templates;
+ sourceTree = "";
+ };
+ 887A621C2C1D168B00E1A461 /* TestPlans */ = {
+ isa = PBXGroup;
+ children = (
+ 887A62182C1D168B00E1A461 /* CI-RevenueCatUI.xctestplan */,
+ 887A62192C1D168B00E1A461 /* CI-Snapshots.xctestplan */,
+ 887A621A2C1D168B00E1A461 /* RevenueCatUI-UnitTests.xctestplan */,
+ 887A621B2C1D168B00E1A461 /* RevenueCatUI.xctestplan */,
+ );
+ path = TestPlans;
+ sourceTree = "";
+ };
+ 887A62242C1D168B00E1A461 /* RevenueCatUITests */ = {
+ isa = PBXGroup;
+ children = (
+ 887A612D2C1D168B00E1A461 /* Data */,
+ 887A61362C1D168B00E1A461 /* Helpers */,
+ 887A61382C1D168B00E1A461 /* Purchasing */,
+ 887A613B2C1D168B00E1A461 /* Resources */,
+ 887A62172C1D168B00E1A461 /* Templates */,
+ 887A621C2C1D168B00E1A461 /* TestPlans */,
+ 887A621D2C1D168B00E1A461 /* BaseSnapshotTest.swift */,
+ 887A621E2C1D168B00E1A461 /* ImageLoaderTests.swift */,
+ 887A621F2C1D168B00E1A461 /* LocalizationTests.swift */,
+ 887A62202C1D168B00E1A461 /* PaywallFooterTests.swift */,
+ 887A62212C1D168B00E1A461 /* PaywallViewEventsTests.swift */,
+ 887A62222C1D168B00E1A461 /* PresentIfNeededTests.swift */,
+ 887A62232C1D168B00E1A461 /* PurchaseCompletedHandlerTests.swift */,
+ 887A63482C1D17A200E1A461 /* RevenueCatUIDev.xctestplan */,
+ );
+ name = RevenueCatUITests;
+ path = Tests/RevenueCatUITests;
+ sourceTree = SOURCE_ROOT;
+ };
B324DC482720C15300103EE9 /* Error Handling */ = {
isa = PBXGroup;
children = (
@@ -2948,6 +3626,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 887A5FB52C1D036200E1A461 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 887A5FBD2C1D036200E1A461 /* RevenueCatUIDev.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
@@ -3140,13 +3826,58 @@
productReference = 57D92C33293E4D0C00D1912A /* ReceiptParser.framework */;
productType = "com.apple.product-type.framework";
};
+ 887A5FB92C1D036200E1A461 /* RevenueCatUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 887A5FBE2C1D036200E1A461 /* Build configuration list for PBXNativeTarget "RevenueCatUI" */;
+ buildPhases = (
+ 887A5FB52C1D036200E1A461 /* Headers */,
+ 887A5FB62C1D036200E1A461 /* Sources */,
+ 887A5FB72C1D036200E1A461 /* Frameworks */,
+ 887A5FB82C1D036200E1A461 /* Resources */,
+ 88DE93E52C211CBC0086B6D8 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 88DE93E42C211CBC0086B6D8 /* PBXTargetDependency */,
+ );
+ name = RevenueCatUI;
+ packageProductDependencies = (
+ );
+ productName = RevenueCatUIDev;
+ productReference = 887A5FBA2C1D036200E1A461 /* RevenueCatUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ 887A63202C1D174200E1A461 /* RevenueCatUITestsDev */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 887A63282C1D174200E1A461 /* Build configuration list for PBXNativeTarget "RevenueCatUITestsDev" */;
+ buildPhases = (
+ 887A631D2C1D174200E1A461 /* Sources */,
+ 887A631E2C1D174200E1A461 /* Frameworks */,
+ 887A631F2C1D174200E1A461 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = RevenueCatUITestsDev;
+ packageProductDependencies = (
+ 887A63492C1D17EF00E1A461 /* Nimble */,
+ 887A634B2C1D17EF00E1A461 /* OHHTTPStubs */,
+ 887A634D2C1D17EF00E1A461 /* OHHTTPStubsSwift */,
+ 887A634F2C1D17EF00E1A461 /* SnapshotTesting */,
+ );
+ productName = RevenueCatUITestsDev;
+ productReference = 887A63212C1D174200E1A461 /* RevenueCatUITestsDev.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
352629F51F7C4B9100C04F2C /* Project object */ = {
isa = PBXProject;
attributes = {
- LastSwiftUpdateCheck = 1300;
+ LastSwiftUpdateCheck = 1540;
LastUpgradeCheck = 1430;
ORGANIZATIONNAME = RevenueCat;
TargetAttributes = {
@@ -3182,6 +3913,12 @@
57D92C32293E4D0C00D1912A = {
CreatedOnToolsVersion = 14.1;
};
+ 887A5FB92C1D036200E1A461 = {
+ CreatedOnToolsVersion = 15.4;
+ };
+ 887A63202C1D174200E1A461 = {
+ CreatedOnToolsVersion = 15.4;
+ };
};
};
buildConfigurationList = 352629F81F7C4B9100C04F2C /* Build configuration list for PBXProject "RevenueCat" */;
@@ -3191,6 +3928,49 @@
knownRegions = (
en,
Base,
+ de,
+ zh_Hans,
+ he,
+ en_AU,
+ ar,
+ el,
+ ja,
+ uk,
+ es_419,
+ en_US,
+ pt_BR,
+ da,
+ it,
+ bg,
+ sk,
+ kk,
+ pt_PT,
+ ms,
+ sv,
+ cs,
+ ko,
+ zh_Hant,
+ en_CA,
+ no,
+ hu,
+ tr,
+ pl,
+ en_GB,
+ vi,
+ ru,
+ fr_CA,
+ es_ES,
+ fi,
+ id,
+ nl,
+ th,
+ ro,
+ hr,
+ hi,
+ ca,
+ "zh-Hans",
+ "zh-Hant",
+ nb,
);
mainGroup = 352629F41F7C4B9100C04F2C;
packageReferences = (
@@ -3225,6 +4005,8 @@
4F6BEE042A27B02400CD9322 /* BackendCustomEntitlementsIntegrationTests */,
2DEAC2D926EFE46E006914ED /* UnitTestsHostApp */,
2DAC5F7126F13C9800C5258F /* StoreKitUnitTests */,
+ 887A5FB92C1D036200E1A461 /* RevenueCatUI */,
+ 887A63202C1D174200E1A461 /* RevenueCatUITestsDev */,
);
};
/* End PBXProject section */
@@ -3323,6 +4105,63 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 887A5FB82C1D036200E1A461 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 887A609B2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A608F2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A12C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60962C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A52C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B22C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60902C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60982C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B52C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A609E2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60952C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A608D2C1D037000E1A461 /* icons.xcassets in Resources */,
+ 887A60AD2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B62C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A42C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60912C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60AE2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A32C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60AB2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60AA2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60932C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A609F2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60AC2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60942C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A92C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B12C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A22C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A62C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60AF2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A608E2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A02C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60992C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60972C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B42C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A72C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B32C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A609C2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60922C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60A82C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A609A2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A609D2C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A60B02C1D037000E1A461 /* Localizable.strings in Resources */,
+ 887A608C2C1D037000E1A461 /* background.jpg in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 887A631F2C1D174200E1A461 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -4104,6 +4943,112 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 887A5FB62C1D036200E1A461 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 887A60CC2C1D037000E1A461 /* PaywallFontProvider.swift in Sources */,
+ 887A60B82C1D037000E1A461 /* Template1View.swift in Sources */,
+ 887A60C62C1D037000E1A461 /* LoadingPaywallView.swift in Sources */,
+ 887A60C72C1D037000E1A461 /* PackageButtonStyle.swift in Sources */,
+ 887A60C52C1D037000E1A461 /* IntroEligibilityStateView.swift in Sources */,
+ 887A60B72C1D037000E1A461 /* WatchTemplateView.swift in Sources */,
+ 887A60722C1D037000E1A461 /* PaywallViewMode+Extensions.swift in Sources */,
+ 887A60C32C1D037000E1A461 /* FooterView.swift in Sources */,
+ 887A607F2C1D037000E1A461 /* Optional+Extensions.swift in Sources */,
+ 887A60752C1D037000E1A461 /* TemplateViewConfiguration.swift in Sources */,
+ 887A60702C1D037000E1A461 /* PaywallTemplate.swift in Sources */,
+ 887A60882C1D037000E1A461 /* MockPurchases.swift in Sources */,
+ 887A60BC2C1D037000E1A461 /* Template5View.swift in Sources */,
+ 887A60BE2C1D037000E1A461 /* PaywallFooterViewController.swift in Sources */,
+ 887A608A2C1D037000E1A461 /* PurchaseHandler.swift in Sources */,
+ 887A60C92C1D037000E1A461 /* PurchaseButton.swift in Sources */,
+ 887A60812C1D037000E1A461 /* PaywallData+Default.swift in Sources */,
+ 887A606A2C1D037000E1A461 /* TrialOrIntroEligibilityChecker.swift in Sources */,
+ 887A60862C1D037000E1A461 /* FooterHidingModifier.swift in Sources */,
+ 887A60C02C1D037000E1A461 /* AsyncButton.swift in Sources */,
+ 887A60892C1D037000E1A461 /* PaywallPurchasesType.swift in Sources */,
+ 887A60C22C1D037000E1A461 /* ErrorDisplay.swift in Sources */,
+ 887A60692C1D037000E1A461 /* IntroEligibilityViewModel.swift in Sources */,
+ 887A60CB2C1D037000E1A461 /* TemplateBackgroundImageView.swift in Sources */,
+ 887A60BD2C1D037000E1A461 /* TemplateViewType.swift in Sources */,
+ 887A606D2C1D037000E1A461 /* Localization.swift in Sources */,
+ 887A60CA2C1D037000E1A461 /* RemoteImage.swift in Sources */,
+ 887A607B2C1D037000E1A461 /* Bundle+Extensions.swift in Sources */,
+ 887A60CF2C1D037000E1A461 /* View+PresentPaywallFooter.swift in Sources */,
+ 887A60BB2C1D037000E1A461 /* Template4View.swift in Sources */,
+ 887A607E2C1D037000E1A461 /* Logger.swift in Sources */,
+ 887A60852C1D037000E1A461 /* FitToAspectRatio.swift in Sources */,
+ 887A608B2C1D037000E1A461 /* PurchaseHandler+TestData.swift in Sources */,
+ 887A60682C1D037000E1A461 /* TemplateError.swift in Sources */,
+ 887A60792C1D037000E1A461 /* UserInterfaceIdiom.swift in Sources */,
+ 887A60742C1D037000E1A461 /* Strings.swift in Sources */,
+ 887A60712C1D037000E1A461 /* PaywallViewConfiguration.swift in Sources */,
+ 887A60C82C1D037000E1A461 /* ProgressView.swift in Sources */,
+ 887A60D02C1D037000E1A461 /* View+PurchaseRestoreCompleted.swift in Sources */,
+ 887A60CD2C1D037000E1A461 /* PaywallView.swift in Sources */,
+ 887A60C12C1D037000E1A461 /* DebugErrorView.swift in Sources */,
+ 887A607C2C1D037000E1A461 /* ColorInformation+MultiScheme.swift in Sources */,
+ 887A60782C1D037000E1A461 /* TestData.swift in Sources */,
+ 887A60672C1D037000E1A461 /* PaywallError.swift in Sources */,
+ 887A606E2C1D037000E1A461 /* LocalizedAlertError.swift in Sources */,
+ 887A60802C1D037000E1A461 /* Package+VariableDataProvider.swift in Sources */,
+ 887A60CE2C1D037000E1A461 /* View+PresentPaywall.swift in Sources */,
+ 887A60832C1D037000E1A461 /* VersionDetector.swift in Sources */,
+ 887A60872C1D037000E1A461 /* ViewExtensions.swift in Sources */,
+ 887A60BA2C1D037000E1A461 /* Template3View.swift in Sources */,
+ 887A607D2C1D037000E1A461 /* ImageLoader.swift in Sources */,
+ 887A60822C1D037000E1A461 /* PreviewHelpers.swift in Sources */,
+ 887A60B92C1D037000E1A461 /* Template2View.swift in Sources */,
+ 887A606B2C1D037000E1A461 /* TrialOrIntroEligibilityChecker+TestData.swift in Sources */,
+ 887A606C2C1D037000E1A461 /* Constants.swift in Sources */,
+ 887A60BF2C1D037000E1A461 /* PaywallViewController.swift in Sources */,
+ 887A60772C1D037000E1A461 /* TemplateViewConfiguration+Images.swift in Sources */,
+ 887A60842C1D037000E1A461 /* ConsistentPackageContentView.swift in Sources */,
+ 887A60C42C1D037000E1A461 /* IconView.swift in Sources */,
+ 887A60732C1D037000E1A461 /* ProcessedLocalizedConfiguration.swift in Sources */,
+ 887A606F2C1D037000E1A461 /* PaywallData+Validation.swift in Sources */,
+ 887A60762C1D037000E1A461 /* TemplateViewConfiguration+Extensions.swift in Sources */,
+ 887A607A2C1D037000E1A461 /* Variables.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 887A631D2C1D174200E1A461 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 887A632B2C1D177800E1A461 /* LocalizedAlertErrorTests.swift in Sources */,
+ 887A632C2C1D177800E1A461 /* PackageVariablesTests.swift in Sources */,
+ 887A632D2C1D177800E1A461 /* PaywallDataValidationTests.swift in Sources */,
+ 887A632E2C1D177800E1A461 /* TemplateViewConfigurationTests.swift in Sources */,
+ 887A632F2C1D177800E1A461 /* VariablesTests.swift in Sources */,
+ 887A63302C1D177800E1A461 /* AsyncTestHelpers.swift in Sources */,
+ 887A63312C1D177800E1A461 /* AvailabilityChecks.swift in Sources */,
+ 887A63322C1D177800E1A461 /* CurrentTestCaseTracker.swift in Sources */,
+ 887A63332C1D177800E1A461 /* DataExtensions.swift in Sources */,
+ 887A63342C1D177800E1A461 /* ImageSnapshot.swift in Sources */,
+ 887A63352C1D177800E1A461 /* OSVersionEquivalent.swift in Sources */,
+ 887A63362C1D177800E1A461 /* SnapshotTesting+Extensions.swift in Sources */,
+ 887A63372C1D177800E1A461 /* TestCase.swift in Sources */,
+ 887A63382C1D177800E1A461 /* PurchaseHandlerTests.swift in Sources */,
+ 887A63392C1D177800E1A461 /* OtherPaywallViewTests.swift in Sources */,
+ 887A633A2C1D177800E1A461 /* PaywallViewDynamicTypeTests.swift in Sources */,
+ 887A633B2C1D177800E1A461 /* PaywallViewLocalizationTests.swift in Sources */,
+ 887A633C2C1D177800E1A461 /* Template1ViewTests.swift in Sources */,
+ 887A633D2C1D177800E1A461 /* Template2ViewTests.swift in Sources */,
+ 887A633E2C1D177800E1A461 /* Template3ViewTests.swift in Sources */,
+ 887A633F2C1D177800E1A461 /* Template4ViewTests.swift in Sources */,
+ 887A63402C1D177800E1A461 /* Template5ViewTests.swift in Sources */,
+ 887A63412C1D177800E1A461 /* BaseSnapshotTest.swift in Sources */,
+ 887A63422C1D177800E1A461 /* ImageLoaderTests.swift in Sources */,
+ 887A63432C1D177800E1A461 /* LocalizationTests.swift in Sources */,
+ 887A63442C1D177800E1A461 /* PaywallFooterTests.swift in Sources */,
+ 887A63452C1D177800E1A461 /* PaywallViewEventsTests.swift in Sources */,
+ 887A63462C1D177800E1A461 /* PresentIfNeededTests.swift in Sources */,
+ 887A63472C1D177800E1A461 /* PurchaseCompletedHandlerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -4147,8 +5092,344 @@
target = 57D92C32293E4D0C00D1912A /* ReceiptParser */;
targetProxy = 5759B420296DFEE2002472D5 /* PBXContainerItemProxy */;
};
+ 88DE93E42C211CBC0086B6D8 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 2DC5621524EC63420031F69B /* RevenueCat */;
+ targetProxy = 88DE93E32C211CBC0086B6D8 /* PBXContainerItemProxy */;
+ };
/* End PBXTargetDependency section */
+/* Begin PBXVariantGroup section */
+ 887A5FF52C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FF42C1D037000E1A461 /* de */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A5FF72C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FF62C1D037000E1A461 /* zh_Hans */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A5FF92C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FF82C1D037000E1A461 /* he */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A5FFB2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FFA2C1D037000E1A461 /* en_AU */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A5FFD2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FFC2C1D037000E1A461 /* ar */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A5FFF2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A5FFE2C1D037000E1A461 /* el */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60012C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60002C1D037000E1A461 /* ja */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60032C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60022C1D037000E1A461 /* en */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60052C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60042C1D037000E1A461 /* uk */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60072C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60062C1D037000E1A461 /* es_419 */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60092C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60082C1D037000E1A461 /* en_US */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A600B2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A600A2C1D037000E1A461 /* pt_BR */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A600D2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A600C2C1D037000E1A461 /* da */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A600F2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A600E2C1D037000E1A461 /* it */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60112C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60102C1D037000E1A461 /* bg */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60132C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60122C1D037000E1A461 /* sk */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60152C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60142C1D037000E1A461 /* kk */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60172C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60162C1D037000E1A461 /* pt_PT */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60192C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60182C1D037000E1A461 /* ms */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A601B2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A601A2C1D037000E1A461 /* sv */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A601D2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A601C2C1D037000E1A461 /* cs */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A601F2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A601E2C1D037000E1A461 /* ko */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60212C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60202C1D037000E1A461 /* zh_Hant */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60232C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60222C1D037000E1A461 /* en_CA */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60252C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60242C1D037000E1A461 /* no */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60272C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60262C1D037000E1A461 /* hu */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60292C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60282C1D037000E1A461 /* tr */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A602B2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A602A2C1D037000E1A461 /* pl */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A602D2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A602C2C1D037000E1A461 /* en_GB */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A602F2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A602E2C1D037000E1A461 /* vi */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60312C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60302C1D037000E1A461 /* ru */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60332C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60322C1D037000E1A461 /* fr_CA */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60352C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60342C1D037000E1A461 /* es_ES */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60372C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60362C1D037000E1A461 /* fi */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60392C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60382C1D037000E1A461 /* id */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A603B2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A603A2C1D037000E1A461 /* nl */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A603D2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A603C2C1D037000E1A461 /* th */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A603F2C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A603E2C1D037000E1A461 /* ro */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60412C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60402C1D037000E1A461 /* hr */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60432C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60422C1D037000E1A461 /* hi */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ 887A60452C1D037000E1A461 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 887A60442C1D037000E1A461 /* ca */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
/* Begin XCBuildConfiguration section */
2DAC5F7926F13C9800C5258F /* Debug */ = {
isa = XCBuildConfiguration;
@@ -4847,6 +6128,154 @@
};
name = Release;
};
+ 887A5FBF2C1D036200E1A461 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = 8SXR2327BM;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ EXCLUDED_ARCHS = "";
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 RevenueCat. All rights reserved.";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 17.5;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ OTHER_SWIFT_FLAGS = "";
+ PRODUCT_BUNDLE_IDENTIFIER = com.revenuecat.RevenueCatUIDev;
+ PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_STRICT_CONCURRENCY = minimal;
+ SWIFT_TREAT_WARNINGS_AS_ERRORS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 887A5FC02C1D036200E1A461 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = 8SXR2327BM;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ EXCLUDED_ARCHS = "";
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 RevenueCat. All rights reserved.";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 17.5;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ MTL_FAST_MATH = YES;
+ OTHER_SWIFT_FLAGS = "";
+ PRODUCT_BUNDLE_IDENTIFIER = com.revenuecat.RevenueCatUIDev;
+ PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_STRICT_CONCURRENCY = minimal;
+ SWIFT_TREAT_WARNINGS_AS_ERRORS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 887A63292C1D174200E1A461 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = 8SXR2327BM;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 17.5;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.revenuecat.RevenueCatUITestsDev;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_TREAT_WARNINGS_AS_ERRORS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 887A632A2C1D174200E1A461 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = 8SXR2327BM;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 17.5;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.revenuecat.RevenueCatUITestsDev;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_TREAT_WARNINGS_AS_ERRORS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -4940,6 +6369,24 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 887A5FBE2C1D036200E1A461 /* Build configuration list for PBXNativeTarget "RevenueCatUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 887A5FBF2C1D036200E1A461 /* Debug */,
+ 887A5FC02C1D036200E1A461 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 887A63282C1D174200E1A461 /* Build configuration list for PBXNativeTarget "RevenueCatUITestsDev" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 887A63292C1D174200E1A461 /* Debug */,
+ 887A632A2C1D174200E1A461 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
@@ -5072,6 +6519,26 @@
package = 57E04739277260DE0082FE91 /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */;
productName = SnapshotTesting;
};
+ 887A63492C1D17EF00E1A461 /* Nimble */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 2D803F6126F144830069D717 /* XCRemoteSwiftPackageReference "nimble" */;
+ productName = Nimble;
+ };
+ 887A634B2C1D17EF00E1A461 /* OHHTTPStubs */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 2D9C5ECB26F2815E0057FC45 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */;
+ productName = OHHTTPStubs;
+ };
+ 887A634D2C1D17EF00E1A461 /* OHHTTPStubsSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 2D9C5ECB26F2815E0057FC45 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */;
+ productName = OHHTTPStubsSwift;
+ };
+ 887A634F2C1D17EF00E1A461 /* SnapshotTesting */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 57E04739277260DE0082FE91 /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */;
+ productName = SnapshotTesting;
+ };
/* End XCSwiftPackageProductDependency section */
};
rootObject = 352629F51F7C4B9100C04F2C /* Project object */;
diff --git a/RevenueCat.xcodeproj/xcshareddata/xcschemes/RevenueCatUIDev.xcscheme b/RevenueCat.xcodeproj/xcshareddata/xcschemes/RevenueCatUIDev.xcscheme
new file mode 100644
index 0000000000..55dc157c75
--- /dev/null
+++ b/RevenueCat.xcodeproj/xcshareddata/xcschemes/RevenueCatUIDev.xcscheme
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RevenueCat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RevenueCat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000000..18d981003d
--- /dev/null
+++ b/RevenueCat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/RevenueCatUI/Data/Localization.swift b/RevenueCatUI/Data/Localization.swift
index 618e139db7..eea0e09d68 100644
--- a/RevenueCatUI/Data/Localization.swift
+++ b/RevenueCatUI/Data/Localization.swift
@@ -235,6 +235,9 @@ private extension SubscriptionPeriod.Unit {
case .week: return .weekOfMonth
case .month: return .month
case .year: return .year
+ @unknown default:
+ Logger.warning("Unknown SubscriptionPeriod.Unit")
+ return .year
}
}
@@ -253,6 +256,7 @@ private extension SubscriptionPeriod {
case .year:
return DateComponents(year: self.value)
@unknown default:
+ Logger.warning("Unknown SubscriptionPeriod")
return .init()
}
}
@@ -273,6 +277,9 @@ private extension PackageType {
case .unknown, .custom:
return nil
+ @unknown default:
+ Logger.warning("Unknown localizationKey")
+ return nil
}
}
diff --git a/RevenueCatUI/Data/PaywallViewMode+Extensions.swift b/RevenueCatUI/Data/PaywallViewMode+Extensions.swift
index 0ab7990bea..843fcb04d6 100644
--- a/RevenueCatUI/Data/PaywallViewMode+Extensions.swift
+++ b/RevenueCatUI/Data/PaywallViewMode+Extensions.swift
@@ -18,31 +18,39 @@ extension PaywallViewMode {
var displayAllPlansByDefault: Bool {
switch self {
case .fullScreen: return true
+#if !os(watchOS)
case .footer: return true
case .condensedFooter: return false
+#endif
}
}
var displayAllPlansButton: Bool {
switch self {
case .fullScreen: return false
+#if !os(watchOS)
case .footer: return false
case .condensedFooter: return true
+#endif
}
}
var shouldDisplayBackground: Bool {
switch self {
case .fullScreen: return true
+#if !os(watchOS)
case .footer, .condensedFooter: return false
+#endif
}
}
func shouldDisplayInlineOfferDetails(displayingAllPlans: Bool) -> Bool {
switch self {
case .fullScreen: return false
+#if !os(watchOS)
case .footer: return false
case .condensedFooter: return !displayingAllPlans
+#endif
}
}
diff --git a/RevenueCatUI/Helpers/Bundle+Extensions.swift b/RevenueCatUI/Helpers/Bundle+Extensions.swift
index 03c87c3490..4aab418a1f 100644
--- a/RevenueCatUI/Helpers/Bundle+Extensions.swift
+++ b/RevenueCatUI/Helpers/Bundle+Extensions.swift
@@ -14,7 +14,7 @@
import Foundation
-#if COCOAPODS
+#if COCOAPODS || !SWIFT_PACKAGE
extension Bundle {
diff --git a/RevenueCatUI/RevenueCatUIDev.xctestplan b/RevenueCatUI/RevenueCatUIDev.xctestplan
new file mode 100644
index 0000000000..43d801b95e
--- /dev/null
+++ b/RevenueCatUI/RevenueCatUIDev.xctestplan
@@ -0,0 +1,24 @@
+{
+ "configurations" : [
+ {
+ "id" : "F153BBC4-4E6D-4941-BBAF-962BE3A88B9C",
+ "name" : "Configuration 1",
+ "options" : {
+
+ }
+ }
+ ],
+ "defaultOptions" : {
+
+ },
+ "testTargets" : [
+ {
+ "target" : {
+ "containerPath" : "container:RevenueCat.xcodeproj",
+ "identifier" : "887A63202C1D174200E1A461",
+ "name" : "RevenueCatUITestsDev"
+ }
+ }
+ ],
+ "version" : 1
+}
diff --git a/RevenueCatUIDev/RevenueCatUIDev.h b/RevenueCatUIDev/RevenueCatUIDev.h
new file mode 100644
index 0000000000..d729911383
--- /dev/null
+++ b/RevenueCatUIDev/RevenueCatUIDev.h
@@ -0,0 +1,24 @@
+//
+// Copyright RevenueCat Inc. All Rights Reserved.
+//
+// Licensed under the MIT License (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://opensource.org/licenses/MIT
+//
+// RevenueCatUIDev.h
+//
+// Created by James Borthwick on 2024-06-14.
+
+#import
+
+//! Project version number for RevenueCatUIDev.
+FOUNDATION_EXPORT double RevenueCatUIDevVersionNumber;
+
+//! Project version string for RevenueCatUIDev.
+FOUNDATION_EXPORT const unsigned char RevenueCatUIDevVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift
index 8bd8edbaae..3e2f02b81e 100644
--- a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift
+++ b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift
@@ -21,11 +21,11 @@ struct SamplePaywallsList: View {
self.list(with: Self.loader)
.navigationTitle("Example Paywalls")
}
- .sheet(item: self.$display) { display in
- self.view(for: display)
- }
- .navigationTitle("Paywalls")
- .navigationViewStyle(StackNavigationViewStyle())
+ .sheet(item: self.$display) { display in
+ self.view(for: display)
+ }
+ .navigationTitle("Paywalls")
+ .navigationViewStyle(StackNavigationViewStyle())
}
@ViewBuilder