Skip to content

Purchase Tester: added ability to purchase products directly with StoreKit#2172

Merged
NachoSoto merged 2 commits into
mainfrom
pruchase-tester-observer-mode-purchase
Dec 21, 2022
Merged

Purchase Tester: added ability to purchase products directly with StoreKit#2172
NachoSoto merged 2 commits into
mainfrom
pruchase-tester-observer-mode-purchase

Conversation

@NachoSoto

@NachoSoto NachoSoto commented Dec 19, 2022

Copy link
Copy Markdown
Contributor

This will help test observer mode, mimicking how an app might use RevenueCat with observer mode.

When that setting is enabled, 2 new buttons will appear:
Simulator Screen Shot - iPhone 14 Pro Max - 2022-12-20 at 08 58 07

The implementation isn't the most maintainable, but we don't really need it to be. I favored simplicity instead of over-complicating the implementation. It's not meant to be a canonical example of the correct way to purchase with StoreKit, just a quick way of testing this behavior.

@NachoSoto NachoSoto added the test label Dec 19, 2022
@NachoSoto NachoSoto requested a review from a team December 19, 2022 22:55
@NachoSoto NachoSoto changed the title PurchaseTester: added ability to purchase products directly with StoreKit Purchase Tester: added ability to purchase products directly with StoreKit Dec 19, 2022
@NachoSoto NachoSoto force-pushed the pruchase-tester-observer-mode-purchase branch from 181ebaa to 39d9350 Compare December 20, 2022 17:00
@NachoSoto NachoSoto changed the title Purchase Tester: added ability to purchase products directly with StoreKit Purchase Tester: added ability to purchase products directly with StoreKit Dec 20, 2022
@vegaro vegaro self-assigned this Dec 21, 2022
await transaction.finish()

print("Successfully purchased SK2 product")
case let .success(.unverified(_, error)):

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you not have to finish the transactions here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I guess we do yeah let me fix it.
It’s not a big deal cause this is just for internal testing, so I hope none of us is trying to cheat purchasing this 😅

…oreKit

This will help test observer mode, mimicking how an app might use `RevenueCat` with observer mode.
@NachoSoto NachoSoto force-pushed the pruchase-tester-observer-mode-purchase branch from d862b92 to d31f8d5 Compare December 21, 2022 16:28
@NachoSoto NachoSoto merged commit f9793d7 into main Dec 21, 2022
@NachoSoto NachoSoto deleted the pruchase-tester-observer-mode-purchase branch December 21, 2022 16:29
NachoSoto pushed a commit that referenced this pull request Dec 21, 2022
**This is an automatic release.**

### Bugfixes
* `ErrorUtils.purchasesError(withUntypedError:)`: handle `PublicError`s
(#2165) via NachoSoto (@NachoSoto)
* Fixed race condition finishing `SK1` transactions (#2148) via
NachoSoto (@NachoSoto)
* `IntroEligibilityStatus`: added `CustomStringConvertible`
implementation (#2182) via NachoSoto (@NachoSoto)
* `BundleSandboxEnvironmentDetector`: fixed logic for `macOS` (#2176)
via NachoSoto (@NachoSoto)
* Fixed `AttributionFetcher.adServicesToken` hanging when called in
simulator (#2157) via NachoSoto (@NachoSoto)
### Other Changes
* `Purchase Tester`: added ability to purchase products directly with
`StoreKit` (#2172) via NachoSoto (@NachoSoto)
* `DNSChecker`: simplified `NetworkError` initialization (#2166) via
NachoSoto (@NachoSoto)
* `Purchases` initialization: refactor to avoid multiple concurrent
instances in memory (#2180) via NachoSoto (@NachoSoto)
* `Purchase Tester`: added button to clear messages on logger view
(#2179) via NachoSoto (@NachoSoto)
* `NetworkOperation`: added assertion to ensure that subclasses call
completion (#2138) via NachoSoto (@NachoSoto)
* `CacheableNetworkOperation`: avoid unnecessarily creating operations
for cache hits (#2135) via NachoSoto (@NachoSoto)
* `PurchaseTester`: fixed `macOS` support (#2175) via NachoSoto
(@NachoSoto)
* `IntroEligibilityCalculator`: added log including `AppleReceipt`
(#2181) via NachoSoto (@NachoSoto)
* `Purchase Tester`: fixed scene manifest (#2170) via NachoSoto
(@NachoSoto)
* `HTTPClientTests`: refactored to use `waitUntil` (#2168) via NachoSoto
(@NachoSoto)
* `Integration Tests`: split up tests in smaller files (#2158) via
NachoSoto (@NachoSoto)
* `StoreKitRequestFetcher`: removed unnecessary dispatch (#2152) via
NachoSoto (@NachoSoto)
* `Purchase Tester`: added companion `watchOS` app (#2140) via NachoSoto
(@NachoSoto)
* `StoreKit1Wrapper`: added warning if receiving too many updated
transactions (#2117) via NachoSoto (@NachoSoto)
* `StoreKitTestHelpers`: cleaned up unnecessary log (#2177) via
NachoSoto (@NachoSoto)
* `TrialOrIntroPriceEligibilityCheckerSK1Tests`: use `waitUntilValue`
(#2173) via NachoSoto (@NachoSoto)
* `DNSChecker`: added log with resolved host (#2167) via NachoSoto
(@NachoSoto)
* `MagicWeatherSwiftUI`: updated `README` to point to workspace (#2142)
via NachoSoto (@NachoSoto)
* `Purchase Tester`: fixed `.storekit` config file reference (#2171) via
NachoSoto (@NachoSoto)
* `Purchase Tester`: fixed error alerts (#2169) via NachoSoto
(@NachoSoto)
* `CI`: don't make releases until `release-checks` pass (#2162) via
NachoSoto (@NachoSoto)
* `Fastfile`: changed `match` to `readonly` (#2161) via NachoSoto
(@NachoSoto)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants