dismissal axis of a presented flow’s Outcome: how the sheet actually ended. These are business outcomes, not errors. Genuine failures arrive as values in .notPresented(.error(EncoreError)), never here.
DismissReason is a String-backed enum. The raw values are the analytics wire values: the same string lands in decline_reason on sdk_offer_sheet_dismissed, unmapped.
Definition
Cases
dismissal always records how the sheet actually ended: .flowCompleted when the SDK closed it on its own; the user’s gesture when a post-claim or success screen kept it up and they closed it themselves.
The last three cases (.offerClaimed, .appBackgrounded, .appTerminated) are emission-only analytics values. Outcome.dismissal never carries them: a claim is advertiser-axis data, and the two lifecycle interruptions fire while the sheet is still up.
Reasons a sheet never appeared at all (
.noOffers, .unsupportedOS, .experimentControl, .notConfigured, .alreadyPresenting, .useCaseUnavailable, .error) live on NotPresentedReason, not here.Usage
Most apps never branch on the dismissal: the canonical check is on the claim and purchase facts, and every non-success falls through to the original flow.Related Types
- PresentationResult, the record
dismissalis one axis of. - Errors, genuine failures carried as values on
.notPresented(.error(...)).