NotPresented with a reason), or a sheet appeared and the record carries two independent funnels (advertiser claim, publisher purchase) plus how the sheet was dismissed. show() returns this record and never throws; errors are values on it.
Definition
Outcome fields are independent axes; NotAttempted is a real value (“funnel open, nothing entered it”), never null.
Fact readers
Convenience properties on every result, so most call sites never need thewhen:
The record carries raw facts only; there is no SDK-computed
unlocked or isPurchased verdict. What a claim means is a property of the flow that served it, so hosts branch on the axes: result.claim != null || result.publisher == PublisherOutcome.Purchased. The configured UnlockMode selects only the in-flow verification mechanism; it never changes how a result is read.The axes
AdvertiserOutcome
Encore’s funnel: how far the claim got.PublisherOutcome
Your funnel: what your purchase controller reported back.DismissReason
How a presented sheet went away: the user’s closing gesture, a server-side rejection, or the SDK ending the flow itself. Every case, its analytics wire value, and the emission-only values that never reach a record are inDismissReason.
NotPresentedReason
Why no sheet ever appeared.Usage
Most call sites branch on the facts:result.advertiser directly.
Related
- DismissReason: every case of the
dismissalaxis and its wire value - Encore.outcomes: every result also lands on the passive stream
- EncorePurchaseController: where the
publisheraxis comes from