-
Notifications
You must be signed in to change notification settings - Fork 294
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
visionOS
: support for Xcode 15 beta 6
#2989
Conversation
81e07d1
to
def42cc
Compare
visionOS
: support for Xcode 15 beta 6visionOS
: support for Xcode 15 beta 6
735f9b1
to
bee593d
Compare
bee593d
to
b1c44c8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice one!
Codecov Report
@@ Coverage Diff @@
## main #2989 +/- ##
==========================================
+ Coverage 86.56% 86.70% +0.14%
==========================================
Files 218 218
Lines 15623 15617 -6
==========================================
+ Hits 13524 13541 +17
+ Misses 2099 2076 -23
|
_This release is compatible with Xcode 15 beta 6 and visionOS beta 3_ ### Bugfixes * `visionOS`: support for `Xcode 15 beta 6` (#2989) via NachoSoto (@NachoSoto) * `CachingProductsManager`: avoid crash when caching different products with same identifier (#2979) via NachoSoto (@NachoSoto) * `PurchasesOrchestrator`: disambiguate transactions from the queue (#2890) via NachoSoto (@NachoSoto) ### Performance Improvements * `StoreKit2TransactionListener`: handle transactions asynchronously (#2910) via NachoSoto (@NachoSoto) ### Other Changes * `Atomic`: avoid race conditions modifying dictionaries (#2981) via NachoSoto (@NachoSoto) * `Logging`: avoid logging "updating offerings" when request is cached (#2904) via NachoSoto (@NachoSoto) * `StoreKit2TransactionListener`: converted into an `actor` (#2909) via NachoSoto (@NachoSoto) * `Integration Tests`: added more observer mode tests (#2905) via NachoSoto (@NachoSoto) * Created `PostedTransactionCache` (#2911) via NachoSoto (@NachoSoto) * `IntroEligibility`: changed products to `Set<String>` (#2976) via NachoSoto (@NachoSoto) * `AdServices`: Rename `postAdServicesTokenIfNeeded()` to `postAdServicesTokenOncePerInstallIfNeeded()` (#2968) via Josh Holtz (@joshdholtz) * `SK1StoreProduct`: changed `productType` warning to debug (#2957) via NachoSoto (@NachoSoto) * `PrivacyInfo.xcprivacy`: added `UserDefaults` to access API types (#2913) via NachoSoto (@NachoSoto) * `Integration Tests`: new test to verify that SK1 purchases don't leave SK2 unfinished transactions (#2906) via NachoSoto (@NachoSoto) * `Logging`: log entire cache key with verbose logs (#2888) via NachoSoto (@NachoSoto) * `StoreProduct`: added test covering warning log (#2897) via NachoSoto (@NachoSoto) * `CustomEntitlementComputation`: use custom API key (#2879) via Toni Rico (@tonidero) * `CachingProductsManager`: removed duplicate log and added tests (#2898) via NachoSoto (@NachoSoto) * `Xcode 15 beta 5`: fixed test compilation (#2885) via NachoSoto (@NachoSoto) --------- Co-authored-by: NachoSoto <ignaciosoto90@gmail.com>
…3005) Fixes #2998. See #2989 for why this is needed in the first place. This is now fixed in SPM: swiftlang/swift-package-manager#6794, but we need a workaround for now. Since `.custom` doesn't work properly (it gets evaluated in Xcode even outside of that platform), this splits `Package.swift` based on Xcode version. Thanks @neonichu for helping with this.
### Context: `#if os(iOS)` no longer evaluates to `true` when compiling for `visionOS` Which means we need `|| os(xrOS)`. But to support older Xcode we need `#if swift(>=5.9) && os(xrOS)`. But, fun fact, short-circuiting doesn’t work in `Xcode 13`. And we still need that to run iOS <15 tests (`FB12223404` / `FB12805891`) 💩 This works around that by defining our own `VISION_OS` flag. ### Changes: - Added `VISION_OS` compile time flag to determine SDK - Replaced `#if os(xrOS)` with `#if VISION_OS` - Added flag to `Package.swift` (thanks @neonichu for helping with this)
_This release is compatible with Xcode 15 beta 6 and visionOS beta 3_ ### Bugfixes * `visionOS`: support for `Xcode 15 beta 6` (#2989) via NachoSoto (@NachoSoto) * `CachingProductsManager`: avoid crash when caching different products with same identifier (#2979) via NachoSoto (@NachoSoto) * `PurchasesOrchestrator`: disambiguate transactions from the queue (#2890) via NachoSoto (@NachoSoto) ### Performance Improvements * `StoreKit2TransactionListener`: handle transactions asynchronously (#2910) via NachoSoto (@NachoSoto) ### Other Changes * `Atomic`: avoid race conditions modifying dictionaries (#2981) via NachoSoto (@NachoSoto) * `Logging`: avoid logging "updating offerings" when request is cached (#2904) via NachoSoto (@NachoSoto) * `StoreKit2TransactionListener`: converted into an `actor` (#2909) via NachoSoto (@NachoSoto) * `Integration Tests`: added more observer mode tests (#2905) via NachoSoto (@NachoSoto) * Created `PostedTransactionCache` (#2911) via NachoSoto (@NachoSoto) * `IntroEligibility`: changed products to `Set<String>` (#2976) via NachoSoto (@NachoSoto) * `AdServices`: Rename `postAdServicesTokenIfNeeded()` to `postAdServicesTokenOncePerInstallIfNeeded()` (#2968) via Josh Holtz (@joshdholtz) * `SK1StoreProduct`: changed `productType` warning to debug (#2957) via NachoSoto (@NachoSoto) * `PrivacyInfo.xcprivacy`: added `UserDefaults` to access API types (#2913) via NachoSoto (@NachoSoto) * `Integration Tests`: new test to verify that SK1 purchases don't leave SK2 unfinished transactions (#2906) via NachoSoto (@NachoSoto) * `Logging`: log entire cache key with verbose logs (#2888) via NachoSoto (@NachoSoto) * `StoreProduct`: added test covering warning log (#2897) via NachoSoto (@NachoSoto) * `CustomEntitlementComputation`: use custom API key (#2879) via Toni Rico (@tonidero) * `CachingProductsManager`: removed duplicate log and added tests (#2898) via NachoSoto (@NachoSoto) * `Xcode 15 beta 5`: fixed test compilation (#2885) via NachoSoto (@NachoSoto) --------- Co-authored-by: NachoSoto <ignaciosoto90@gmail.com>
…3005) Fixes #2998. See #2989 for why this is needed in the first place. This is now fixed in SPM: swiftlang/swift-package-manager#6794, but we need a workaround for now. Since `.custom` doesn't work properly (it gets evaluated in Xcode even outside of that platform), this splits `Package.swift` based on Xcode version. Thanks @neonichu for helping with this.
### Changes: - Added `visionOS` to list of deployment targets in `Podspec` - ~~Updated `Swift` version to 5.7 (see https://swiftversion.net), Xcode 14.0 is required, and that's Swift 5.7. We no longer support 5.5~~ (done in a previous PR already) - Added `visionOS` CocoaPods lint check to `build_visionos` - Added `VISION_OS` to Podspec (see #2989) - ~~Changed `visionOS` CI job to use `Xcode 15 beta 8` (see https://discuss.circleci.com/t/xcode-15-rc-released-important-notice-for-visionos-sdk-users/49278)~~ (no longer needed) Fixes https://community.revenuecat.com/sdks-51/how-to-support-visionos-via-cocoapods-3499
Context:
#if os(iOS)
no longer evaluates totrue
when compiling forvisionOS
Which means we need
|| os(xrOS)
.But to support older Xcode we need
#if swift(>=5.9) && os(xrOS)
.But, fun fact, short-circuiting doesn’t work in
Xcode 13
.And we still need that to run iOS <15 tests (
FB12223404
/FB12805891
)💩
This works around that by defining our own
VISION_OS
flag.Changes:
VISION_OS
compile time flag to determine SDK#if os(xrOS)
with#if VISION_OS
Package.swift
(thanks @neonichu for helping with this)