mirror of
https://github.com/RevenueCat/purchases-ios
synced 2026-11-11 22:55:55 +05:45
cad10d8769dc136c0e5a536e19a79596da5b4b09
8
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c4d43ffdec |
Storekit 2: milestone 1 (#953)
* Sk2: fetch products, make purchases (#800) * added product struct * added Product protocol and separated wrappers for sk1 and sk2 * added price and localizedPriceString to Product * added bridging code and first call to generic productsWithIdentifiers * a lot of cleanup, added a couple more properties for products * added subscription group id and cleaned up a bit * Updated productsManager so it forwards the products calls to fetchers for sk1 and sk2 * updated a few tests and API availability checks * updated a few methods to use productwrapper instead of skproduct * updated tests in many places and apis * fixed rebase issues * fixed a few todos * fixed a few issues caught by swiftlint * fixed rebase issues and some visibility issues * updated a few places to use SK2 * added horrifyingly hacky implementation for purchasing with sk2 * small cleanup, re-added method for getting SKProducts directly * cleanup * added caching to sk2 products fetcher * removed trailing whitespace * slight cleanup * added more clarifying comments * another cleanup * added missing availability marks for macOS * fixed availability marks for ProductsFetcher in ProductsManager * yet another fix for macOS availability checks * and more fixes for macOS version since 13.0 doesn't exist * fixed issues in api tester * fixed pod lib lint on non-arch64 architectures * bundle update fastlane * added test for dictionary += operator * removed unnecessary method for fetching product wrappers * cleanup file names * updated references in StoreKitTests * fixed targets for test file * fixed rebase issues * added StoreKit 2 transaction listener in the hopes of getting purchases working, unfortunately doesn't seem to work well * fix bad refactor * refactored, move purchasing logic to the orchestrator, added processing of results of SK 2 purchases to the orchestrator and the sk2 listener * added arch checks in a few places to fix builds in armv7 * added another todo * updated test for ProductsManager in StoreKit Test * renamed `Product.swift` -> `ProductWrapper.swift` * increased timeout for test * added checks to ensure test compatibility with lower iOS versions * ProductWrapper -> ProductDetails * import Purchases -> import RevenueCat * withProductDetailss -> withProductDetails * productDetailss -> productDetails * productsFromOptimalStore -> productsFromOptimalStoreKitVersion * linting * `Task.init {` -> `Task {` * added comment explaining explicit cancel * more improvements from PR comments * `} catch let error {` -> `} catch {` * readability improvements * move init to the top for consistency * extracted logging string into PurchasesString * extracted another string * added todo comment * improvements from PR comments, removed redundant method * removed unused method, more renames and improvements from PR comments * updates xcode version for CI * split files into StoreKit 1 and StoreKit 2 groups * fix indentation * fixed rebase issues * Fix PurchaseTester project (#847) * CheckTrialOrIntroPriceEligibility StoreKit2 support (#807) * Sk2: fetch products, make purchases (#800) * added product struct * added Product protocol and separated wrappers for sk1 and sk2 * added price and localizedPriceString to Product * added bridging code and first call to generic productsWithIdentifiers * a lot of cleanup, added a couple more properties for products * added subscription group id and cleaned up a bit * Updated productsManager so it forwards the products calls to fetchers for sk1 and sk2 * updated a few tests and API availability checks * updated a few methods to use productwrapper instead of skproduct * updated tests in many places and apis * fixed rebase issues * fixed a few todos * fixed a few issues caught by swiftlint * fixed rebase issues and some visibility issues * updated a few places to use SK2 * added horrifyingly hacky implementation for purchasing with sk2 * small cleanup, re-added method for getting SKProducts directly * cleanup * added caching to sk2 products fetcher * removed trailing whitespace * slight cleanup * added more clarifying comments * another cleanup * added missing availability marks for macOS * fixed availability marks for ProductsFetcher in ProductsManager * yet another fix for macOS availability checks * and more fixes for macOS version since 13.0 doesn't exist * fixed issues in api tester * fixed pod lib lint on non-arch64 architectures * bundle update fastlane * added test for dictionary += operator * removed unnecessary method for fetching product wrappers * cleanup file names * updated references in StoreKitTests * fixed targets for test file * fixed rebase issues * added StoreKit 2 transaction listener in the hopes of getting purchases working, unfortunately doesn't seem to work well * fix bad refactor * refactored, move purchasing logic to the orchestrator, added processing of results of SK 2 purchases to the orchestrator and the sk2 listener * added arch checks in a few places to fix builds in armv7 * added another todo * updated test for ProductsManager in StoreKit Test * renamed `Product.swift` -> `ProductWrapper.swift` * increased timeout for test * added checks to ensure test compatibility with lower iOS versions * ProductWrapper -> ProductDetails * import Purchases -> import RevenueCat * withProductDetailss -> withProductDetails * productDetailss -> productDetails * productsFromOptimalStore -> productsFromOptimalStoreKitVersion * linting * `Task.init {` -> `Task {` * added comment explaining explicit cancel * more improvements from PR comments * `} catch let error {` -> `} catch {` * readability improvements * move init to the top for consistency * extracted logging string into PurchasesString * extracted another string * added todo comment * improvements from PR comments, removed redundant method * removed unused method, more renames and improvements from PR comments * updates xcode version for CI * split files into StoreKit 1 and StoreKit 2 groups * fix indentation * adds check intro trial sk2 support * fixes and renames * removes debugging variables * fixes and use of ProductsManager * fix sk2Product isEligibleForIntroOffer * remove swiftlint warning * adds header and links to issues * fix strings * early return * indentation fix * removes maccatalyst * fixes compilation and renames to checkEligibility * changes on ProductsManager adding a specific sk2 function * makes changes in TrialOrIntroPriceEligibilityChecker * rename function to sk2ProductDetails * some renaming * duplicated ProductsFetcherSK1Tests.swift * add XCTUnwrap * revert Co-authored-by: aboedo <andresboedo@gmail.com> * fixed offeringsManagerTests (#856) * Separate storekit test and backend tests (#845) * Sk2: fetch products, make purchases (#800) * added product struct * added Product protocol and separated wrappers for sk1 and sk2 * added price and localizedPriceString to Product * added bridging code and first call to generic productsWithIdentifiers * a lot of cleanup, added a couple more properties for products * added subscription group id and cleaned up a bit * Updated productsManager so it forwards the products calls to fetchers for sk1 and sk2 * updated a few tests and API availability checks * updated a few methods to use productwrapper instead of skproduct * updated tests in many places and apis * fixed rebase issues * fixed a few todos * fixed a few issues caught by swiftlint * fixed rebase issues and some visibility issues * updated a few places to use SK2 * added horrifyingly hacky implementation for purchasing with sk2 * small cleanup, re-added method for getting SKProducts directly * cleanup * added caching to sk2 products fetcher * removed trailing whitespace * slight cleanup * added more clarifying comments * another cleanup * added missing availability marks for macOS * fixed availability marks for ProductsFetcher in ProductsManager * yet another fix for macOS availability checks * and more fixes for macOS version since 13.0 doesn't exist * fixed issues in api tester * fixed pod lib lint on non-arch64 architectures * bundle update fastlane * added test for dictionary += operator * removed unnecessary method for fetching product wrappers * cleanup file names * updated references in StoreKitTests * fixed targets for test file * fixed rebase issues * added StoreKit 2 transaction listener in the hopes of getting purchases working, unfortunately doesn't seem to work well * fix bad refactor * refactored, move purchasing logic to the orchestrator, added processing of results of SK 2 purchases to the orchestrator and the sk2 listener * added arch checks in a few places to fix builds in armv7 * added another todo * updated test for ProductsManager in StoreKit Test * renamed `Product.swift` -> `ProductWrapper.swift` * increased timeout for test * added checks to ensure test compatibility with lower iOS versions * ProductWrapper -> ProductDetails * import Purchases -> import RevenueCat * withProductDetailss -> withProductDetails * productDetailss -> productDetails * productsFromOptimalStore -> productsFromOptimalStoreKitVersion * linting * `Task.init {` -> `Task {` * added comment explaining explicit cancel * more improvements from PR comments * `} catch let error {` -> `} catch {` * readability improvements * move init to the top for consistency * extracted logging string into PurchasesString * extracted another string * added todo comment * improvements from PR comments, removed redundant method * removed unused method, more renames and improvements from PR comments * updates xcode version for CI * split files into StoreKit 1 and StoreKit 2 groups * fix indentation * updated all references from StoreKitTests -> BackendIntegrationTests * updated references in a few more places * updated name of target back to StoreKitTests so the cert doesn't get updated 🙄 * fixed issues in tests * updated arch checks for arm devices from if arm64 to if !arm, so that the code will run successfully in intel macs * upgraded deployment target to 12.0 to fix issues when compiling StoreKit 2. Removed arch checks. * added separate `UnitTestsHostApp` since the `StoreKitTest` app has higher minimum deployment target than the unit tests target * added separate scheme for unit tests to address the need of StoreKitTest * fixed scheme name for Scanfile * small fixes * added skipping of test depending on OS version availability * added pre-warming of iOS device since tests aren't starting up correctly in CI * added pre-warming of iphone 6 and tv * fixed devices setup since iPhone 6 is no longer available in CircleCI * renamed StoreKitTestApp + StoreKitTests -> BackendIntegrationTests + HostApp * more fixes to naming * updated Nimble version, more fixes to paths * removed host app for regular unit tests, fixed setup * even more naming fixes, updated the scan schemes so we don't try to test appleTV for the StoreKitUnitTests * enabled backend_integration_tests for all commits * added missing dependency to RevenueCat framework from StoreKitUnitTests target * fixed dependencies between targets, which would compile more targets than necessary and would have issues where the main framework would get built for the wrong platform * update fastlane * fixed lane name * fixed deployment target for backend integration tests * updated scan device OS for backend integration tests to 15.0 * fixed integration tests running wrong fastlane lane, added pre-warming devices for regular unit tests, added command line tools installation step * removed command line tools installation step * updated device name since iPhone SE isn't available on circleCI * updated iPhone SE -> iPhone 8 in a couple more places * removed pre-warming of devices, since it has been removed from Xcode 13 * removed 14.5 device from tests for now * removed signing from backend integration tests * fixed rebase issues * Sk2: ProductDetails cleanup and improvements (#832) * moved logic to wrap products into productsFetcher, added basic test to compare sk1Wrapper and sk2Wrapper * added more checks to cover all existing properties for productWrappers * added test to check that sk1 wrapper works correctly * added test for SK2 product wrapper * renamed internal method `purchase(product:` -> `purchase(sk1Product:` * moved StoreKit2TransactionListener into corresponding group in project * added base file for PurchaseOrchestratorTests, improved a couple of version checks for tests * updated imports to `RevenueCat` * re-added @available in a couple of tests * update naming: ProductWrapper -> ProductDetails * fix rebasing issue * added type aliases for legacy and new skproduct, updated references to them in many places * renamed mockSKProduct -> mockLegacySKProduct * more cleanup * updated naming in a few more places * and more naming updates * final batch of naming updates * updated naming from new and legacy sk products to sk1 and sk2 products * fixed naming issues with variable names that started in uppercase * more fixes to variable names * even more naming fixes * final batch of naming updates, rebase fixes * several fixes from rebase * removed another arch check * fixes from PR comments * fixed missing mocks for MockProductsManager * more "productDetailss" var renames * removed scan_scheme env variable since we're setting it manually * added extra test configuration for UnitTests scheme, set test ordering to random * small ci configuration updates * added more generous timeout for one test case * added pre-warming of simulators * added device pre-warming at the fastlane level * added test plan * added manual sleep of 5 mins to see if that fixes the testing issues * re-added manual opening of simulators, otherwise the wait makes no sense * made the wait for simulator bit only happen in ci * improvement from PR comments * fixed one reason for app crash in iOS < 15, since SceneDelegate was missing * added check for subscriptionGroupIdentifier * updated to use XCTSkip instead of early return in a couple of tests * Tests for CheckTrialOrIntroductoryPriceEligibility StoreKit2 using StoreKitTests (#863) * Storekit 2: fix tests for iOS 14.5 (#890) * updated storage of underlyingSK2Product to use Any to prevent crashes in 14.5 devices * added comment and small cleanup * re-added iOS 14.5 devices to fastlane scan * fixed rebase issues * merge storekit_2_disable_mac_builds * Sk2 purchase tests (#873) * added tests skeleton, cleaned up handling of purchase sk2 package * code clean up, added mocks to sk unit tests target, clean up tests code * added mockStoreKit2Listener, fixed purchasesOrchestator test * implemented missing test cases * casted SK2Product to any for storing to prevent linking issues * fixed more issues with linking + moved PurchasesOrchestratorTests to storekit tests * linting * fixed duplicate files in build phase * fixed more issues with linking on older OS * fixed rebase issues * fix one test in SwiftAPITester * updated xcode version for swift api tester * updated api testers to use an existing bundle id to prevent code signing issues * remove development team + undo bundle id updates * added fastlane match readonly step * re-add dev team * re-add dev team to release builds for objc api tester ios * updated certs to use fastlane match * specified missing params for match * fixed copy/paste issue * `MockStoreKit2Listener` -> `MockStoreKit2TransactionListener` * added clearing of user defaults before every test run * added crude handling of the user cancelled case for SK2 purchases. * fixed indentation * updated test name to reflect what it's actually testing * reset the value of `failTransactionsEnabled` before every test * moved to using `resetToDefaultState` * Removes `RequiresXcode13` (#895) * improve pre-warming and fix flaky tests (#897) * replaced manual pre-warming with orb * removed appleTV from prewarming list * removed duplicate source file * added test timeouts * added artificial wait before running storekit tests * made the artificial wait run only once * removed unnecessary param * moved the `Self.hasWaited = true` line above, removed unnecessary parenthesis * doubled the wait time just in case, made it a static let. * doubled initial wait time again * removed another instance of `wait_for_simulator:true` * Temporarily disable sk2 purchases (#898) * added a feature flag to disable SK2 temporarily * fixed tests * Show Manage Subscriptions public API (#896) * fix rebase issue * fixed rebase issues * Re-enable macOS builds (#923) * updated xcode version to 13.1.0 * re-enabled macOS builds, re-added API tester for macOS * Merge main into storekit_2 (#930) * Begin Refund Request (#924) * Fix/explicit errors on tasks (#940) * replaced `Task.init` with `_ = Task<Void, Never>`, so that if the contents of the task throw, the compiler forces us to handle the exception * added link with explanation to the swift style guide * Fix: storekit 2 tests on older OS versions (#951) * removed duplicate line for devices * fixed tests for older os versions by not storing SK2 types directly in the tests target. * fixed copy/pasta * merged main into sk2 (#952) * improvements from PR comments * more improvements from PR comments * even more improvements from PR comments * more improvements from PR comments * updated to use the new lock * removed outdated comment * added missing cases to switch * refactor to pass in the systemInfo to productsManager, and to reuse existing instances for intro eligiblity * made useStoreKit2IfAvailable an instance variable instead of static * added test cases for fetching from optimal sk with different sk version preferences * fixed instance of the wrong method being called from overriden `setUpWithError` * oops, fixed missing `try` * added more detail to fatalError message when sk version can't be determined * split tests for `TrialOrIntroPriceEligibilityChecker` into SK1 and SK2 * fix merge conflicts Co-authored-by: Cesar de la Vega <cesarvegaro@gmail.com> Co-authored-by: beylmk <maddie@revenuecat.com> |
||
|
|
05b148ee38 |
Release/4.0.0-beta.6 (#929)
* Version bump for 4.0.0-beta.6 * Update changelog * Update signing * Update cocoapodsintegration Gemfile.lock |
||
|
|
aa190025aa |
Purchaser to Customer rename (#878)
Alllll the things from Purchaser to Customer Resolves #876 * Purchaser to Customer rename * Update IntegrationTests * Update RCIntegrationRunner for RCCustomerInfo * Update RevenueCat-Swift.h * V4 API Updates MD * Update tests for new name * Update PurchasesDelegate.swift rename purchases(_ purchases: Purchases, didReceiveUpdated customerInfo: CustomerInfo) to func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) Add availability rename |
||
|
|
41936ab6f9 |
Resolve XcodeDirectIntegration issues
Fix Carthage integration test Fix SPM integration test Update Fastfile to add "--use-xcframeworks" Update Fastfile for spm commit branch RCv4 Update Package.resolved Create Xcode13 specific folder |
||
|
|
05c2fa3803 | Update the last few remaining Purchases.framework references. | ||
|
|
ce61a6c1c1 |
Rename Purchases.framework to RevenueCat.framework (#811)
* Rename Purchases.framework to RevenueCat.framework * Update for comments |
||
|
|
74034cb7b8 |
Make single package and module for Purchases (#789)
* Move tests * Continue to move things into Purchases * Finish move * Fix multiple purchases targets in Package.swift * Fix missing ] * SPM testing * Fix path in SPM * Clean up references to PurchasesCoreSwift things * Add back configure methods to objc api, add swiftlint buildscript, fix lint errors * Add NSHumanReadableCopyright back to Info.plist * Update for comments * Update SPM Package * Update for comments * Fix Scanfile test scheme * Fix circleci SCAN_SCHEME * Note about publicHeadersPath in Package.swift |
||
|
|
31b619cd7c |
Integration tests (#381)
* added integration tests project for cocoapods * added method to set up the sdk in cocoapods * added fastfile and gemfile for cocoapodsIntegration project * RCTestIntegration -> RCInterationRunner * added unit tests target * added unit tests * added circleci config for cocoapods integration test * added Appfile and added integration tests job to CI * added cd before commands * updated iOS deployment target to 9.0 * ignored fastlane results in subfolders * specified iphone version for the archive * specified OS version as well * Added SPMIntegration project * added spm integration test to circleci * Added dummy swift file so obj-c targets define module, fixed SPM integration tests * added actual call to test runner in spm test * more fixes for cocoapods and spm * fix cocoapods * added missing bridging header * added carthage integration * added carthage to ci * updated carthage bootstrap step * added xcode direct integration, fixed carthage build by duplicating carthage.sh script * updated deployment target of xcode direct integration project to 14.0 * removed UI tests target from xcode direct integration * fix carthage dependency path * carthage bootstrap -> carthage update * replaced fastlane run xcarchive with direct command * enabled automatic signing for xcode direct integration project * disabled and re-enabled auto-signing for other projects * updated archive destination to "generic/platform=iOS" * fix bad copy/paste of destination * added -allowProvisioningUpdates to allow CI to do automatic signing * replaced xcodebuild with fastlane gym * added matchfile for xcodeDirectIntegration, disabled other jobs for now * commented out tests for now * moved signing to fastlane * specified correct certificate for development / distribution * added export method, updated provisioning profile id * added step to set up temporary default keychain * fix typo in previous commit * removed code signing from the purchases-ios framework * replaced keychain step with fastlane run setup_circle_ci * added fastfile and lane for archiving * commented out the xcodeIntegration job for now, added the job for cocoapods, updated signing for cocoapods * added missing matchfile, commented out tests * added carthage integration fastlane config and matchfile, commented out cocoapods integration job for now * added spm integraiton fastlane config and match file, commented out carthage integration job, updated signing for spm integration * uncommented all jobs * created command to install gems and reused it everywhere * fix install-gems calls, added scan-and-archive command * fixed missing directory in bundle install * added scanfile and moved regular tests to use the fastlane-scan command * unified install-gems and scan-and-archive jobs * reordered commands in cocoapods integration * reverted changes for regular tests which don't actually need to archive * updated fastfiles so they all reuse the main fastfile * moved certs repo to an env variable * replaced api key with env variable * ignored Cartfile.resolved in IntegrationTests/CarthageIntegration * updated cocoapods integration and added test to assert that purchaserInfo can be fetched correctly * removed UI tests for SPMIntegration * updated integration tests for SPM * updated XcodeDirectIntegrationTests * updated tests for CarthageIntegration * removed UI tests for Carthage * updated deployment target for SPM integration, removed UI tests for CarthageIntegration * fix step that injects api keys * added extra install-gems step for cocoapodsIntegration * replaced directory and cd with working_directory * removed unneeded AppFiles * separated api key replacement command to fix the step * fixed missing name param in config.yml * re-added accidentally-removed working_directory for the archive step * replaced individual, repeated integrationTests files with a single, unified file, using a flag to determine how to import the framework correctly. * fixed cocoapods * removed unused CocoapodsIntegrationTests.swift file |