Skip to main content
The result of showing an offer to a user: either nothing appeared (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

The 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 the when:
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 in DismissReason.

NotPresentedReason

Why no sheet ever appeared.

Usage

Most call sites branch on the facts:
When the mechanism detail matters, read the record:
To distinguish an unverified claim from a verified one, read result.advertiser directly.