Commit Graph
11 Commits
Author SHA1 Message Date
aboedo f6304b3339 Release/4.0.0-beta.9 (#1132)
* Version bump for 4.0.0-beta.9

* added note about "lots of under the hood improvements"

* fixed issue with carthage integration tests cache referencing file that was removed from versioning, fixed issue with scan-and-archive passing in an nonexistent scheme

* added updated deployment targets to changelog

* updated deployment target for cocoapods integration tests

* fixed issue with duplicate swift_name

* update Package.resolved

* removed unnecessary copy frameworks phase

* update deployment target for spm integration tests

* deleted duplicate line in devices

* updated swift tools to swift 5.5

* added all non-SDK files to exclude

* added missing foundation imports
2022-01-06 09:30:09 -03:00
aboedo cad10d8769 Storekit 2: update deployment targets (#977)
* updated deployment targets in Package.swift

* updated deployment targets in Podspec

* updated deployment targets in xcode project

* updated deployment target in cocoapods integration tests

* updated deployment target in SPM integration tests

* Added note in the v4_api_updates doc to document the new OS requirements

* reverted os version for watchOS back to "6.2" since it seems like `v6_2` doesn't work
2021-11-22 13:04:19 -03:00
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>
2021-11-22 12:37:33 -03:00
Joshua Liebowitz 05b148ee38 Release/4.0.0-beta.6 (#929)
* Version bump for 4.0.0-beta.6
* Update changelog
* Update signing
* Update cocoapodsintegration Gemfile.lock
2021-11-02 13:50:22 -07:00
Joshua Liebowitz 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
2021-10-05 15:49:14 -07:00
Joshua Liebowitz 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
2021-09-03 15:35:59 -07:00
Joshua Liebowitz 05c2fa3803 Update the last few remaining Purchases.framework references. 2021-09-03 10:59:25 -07:00
Joshua Liebowitz ce61a6c1c1 Rename Purchases.framework to RevenueCat.framework (#811)
* Rename Purchases.framework to RevenueCat.framework

* Update for comments
2021-09-02 13:53:59 -07:00
Joshua Liebowitz 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
2021-08-26 13:54:50 -07:00
Joshua Liebowitz 79008f5674 Switch to Swift Package Manager (#527)
* Initial removal of some fatalError calls

* Update for Nimble SPM limitations

Nimble doesn't support raiseException() when built with SPM
- paves way for SPM support and M1 support

* Update UInt8+ExtensionsTests.swift

Specify specific BitShiftError cases in test

* Let's just remove carthage while we're at it.

* Remove integration-tests-carthage from config.yml

* Update fastlane Fastfile for removing carthage

* Linter errors

* Updates for comments

* Fix config.yml

* Update ObjCThrowExceptionMatcher.swift

* private instead of fileprivate, I always forget which is more restrictive
2021-06-11 15:21:30 -07:00
aboedo 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
2020-11-20 12:10:56 -03:00