Extract Attribution logic out of Purchases#1693
Conversation
aboedo
left a comment
There was a problem hiding this comment.
absolutely love it so far. We should get the API testers updated as well
NachoSoto
left a comment
There was a problem hiding this comment.
Just a few issues with API testers, but I love this refactor.
There was a problem hiding this comment.
Awesome.
These probably create a bunch new deprecation warnings when compiling SwiftAPITester.
Could you add an annotation to checkPurchasesSubscriberAttributesAPI like I did in #1631?
There was a problem hiding this comment.
| * Attribution object that is responsible for all explicit attribution APIs | |
| * ``Attribution`` object that is responsible for all explicit attribution APIs |
There was a problem hiding this comment.
What do you mean by this?
There was a problem hiding this comment.
Oooh I think you meant
| * - Note: Calling this static property or to instance property has the same effect. | |
| * - Note: Calling this static property or the instance property has the same effect. |
I wonder if we actually need this static one though. I'm usually not a big fan of offering two ways of doing the same thing, leads to users potentially wondering "what's the difference?", and IMO it doesn't add much.
And considering that this one implicitly relies on the SDK being already configured, I think that can be made explicit by forcing users to call it on Purchases.shared.
There was a problem hiding this comment.
Cool, I was leaning towards removing it, so I'm glad you agree 😄
There was a problem hiding this comment.
| * Attribution object that is responsible for all explicit attribution APIs | |
| * ``Attribution`` object that is responsible for all explicit attribution APIs |
There was a problem hiding this comment.
Wait, but these methods STILL need to be available because they're deprecated and not obsoleted, so we should check that they're still available by leaving this as is.
You can add
@available(*, deprecated) // Ignore deprecation warningsTo silence the warnings
There was a problem hiding this comment.
This is missing
RCAttribution *attribution = [p attribution];There was a problem hiding this comment.
All these are already checked by RCAttributionAPI, so I'd remove them?
There was a problem hiding this comment.
This file is just missing:
let attribution: Attribution = purchases.attribution|
|
||
| @available(*, deprecated) // Ignore deprecation warnings | ||
| private func checkPurchasesSubscriberAttributesAPI(purchases: Purchases) { | ||
| _ = purchases.attribution |
There was a problem hiding this comment.
This needs to check the type:
| _ = purchases.attribution | |
| let _: Attribution = purchases.attribution |
And I would move this out of this method since it's not deprecated (and if it were, we wouldn't want to ignore that warning)
Move purchases.attribution from deprecation section to current api
|
@beylmk Mentioning you here because I think we will want to rework the |
### Changes: * Replaced `CustomerInfo.nonSubscriptionTransactions` with a new non-`StoreTransaction` type (#1733) via NachoSoto (@NachoSoto) * `Purchases.configure`: added overload taking a `Configuration.Builder` (#1720) via NachoSoto (@NachoSoto) * Extract Attribution logic out of Purchases (#1693) via Joshua Liebowitz (@taquitos) * Remove create alias (#1695) via Joshua Liebowitz (@taquitos) All attribution APIs can now be accessed from `Purchases.shared.attribution`. ### Improvements: * Improved purchasing logs, added promotional offer information (#1725) via NachoSoto (@NachoSoto) * `PurchasesOrchestrator`: don't log attribute errors if there are none (#1742) via NachoSoto (@NachoSoto) * `FatalErrorUtil`: don't override `fatalError` on release builds (#1736) via NachoSoto (@NachoSoto) * `SKPaymentTransaction`: added more context to warnings about missing properties (#1731) via NachoSoto (@NachoSoto) * New SwiftUI Purchase Tester example (#1722) via Josh Holtz (@joshdholtz) * update docs for `showManageSubscriptions` (#1729) via aboedo (@aboedo) * `PurchasesOrchestrator`: unify finish transactions between SK1 and SK2 (#1704) via NachoSoto (@NachoSoto) * `SubscriberAttribute`: converted into `struct` (#1648) via NachoSoto (@NachoSoto) * `CacheFetchPolicy.notStaleCachedOrFetched`: added warning to docstring (#1708) via NachoSoto (@NachoSoto) * Clear cached offerings and products after Storefront changes (2/4) (#1583) via Juanpe Catalán (@Juanpe) * `ROT13`: optimized initialization and removed magic numbers (#1702) via NachoSoto (@NachoSoto) ### Fixes: * `logIn`/`logOut`: sync attributes before aliasing (#1716) via NachoSoto (@NachoSoto) * `Purchases.customerInfo(fetchPolicy:)`: actually use `fetchPolicy` parameter (#1721) via NachoSoto (@NachoSoto) * `PurchasesOrchestrator`: fix behavior dealing with `nil` `SKPaymentTransaction.productIdentifier` during purchase (#1680) via NachoSoto (@NachoSoto) * `PurchasesOrchestrator.handlePurchasedTransaction`: always refresh receipt data (#1703) via NachoSoto (@NachoSoto)
Move all Purchases.setX attribution-related things into their own namespace Purchases.Attribution.setX
We can deprecate the current ones and easily have Xcode fixes for them all when we release RCv5 (whenever that is)
I think extracting API from Purchases into Purchases. makes a lot of sense and is more discoverable/friendly for docs, too.
Resolves CSDK-128