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:
userConfirmedCompletion is true only when the placement passed a prize, the user said they finished the offer, and Encore’s server granted the prize: the first Yes per user per offer, within your daily limit, for a user your app identified. It is still the user’s word: Encore books no transaction or payout for it, and it never changes the stage (Claimed, or Verified in strict mode). It stays false in an app set to pay only when the brand confirms; credit those prizes from the offer_completed webhook. See Reward for Trying.
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