<!--
{
  "availability" : [
    "iOS: 18.1.0 -",
    "iPadOS: 18.1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SecureElementCredential",
  "identifier" : "/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SecureElementCredential"
    ],
    "preciseIdentifier" : "s:23SecureElementCredential0C7SessionC26PresentmentIntentAssertionC"
  },
  "title" : "CredentialSession.PresentmentIntentAssertion"
}
-->

# CredentialSession.PresentmentIntentAssertion

An object that signals your app’s intention to make exclusive use of the device’s contactless features.

```
final class PresentmentIntentAssertion
```

## Overview

Create an instance of this type to obtain a 60-second exclusive use window of the user interface for a selected credential. This prevents interruptions to your app from Wallet, any other default contactless app, or other apps using the SecureElementCredential framework.

> Note: A presentment intent assertion isn’t required before launching the presentment sheet.

The assertion expires when any of the following occur:

- The assertion instance deinitializes.
- You call the <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()> method to indicate that you no longer need the assertion.
- The system’s 60-second timeout expires.
- The session encounters a <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/Event/cardEmulationTimeout>, potentially caused by one of the performTransaction methods.

Apps can only acquire an assertion 15 seconds after relinquishing the previous assertion.

Any of the `transaction` methods automatically acquire an internal instance of the `PresentmentIntentAssertion`. Because of this, call `relinquish()` prior to using the transaction methods. The following sequence shows how this works in a SwiftUI application:

1. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()> before showing any proprietary payment UI.
   2.Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()> to stop using the assertion before invoking the transaction method.
2. Invoke <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/configuration()> to start a transactionTask.
3. Perform the transaction with the transactionTask.
4. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialTransaction/Configuration/invalidate()> after presenting the credential.
5. Optionally, call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()>  to finish up any proprietary payment UI.
6. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()> again to end use of the assertion.

In a UIKit app, use the following approach:

1. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()>
   prior to showing any proprietary payment UI.
2. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()> to stop using the assertion before invoking the transaction API.
3. Perform the transaction task.
4. Optionally, call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()> to finish up any proprietary payment UI.
5. Call <doc://com.apple.documentation/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()> again to end use of the assertion.

## Topics

### Inspecting assertion state

[`var state: CredentialSession.PresentmentIntentAssertion.State`](/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/state-swift.property)

The state of a presentment intent assertion, indicating whether it’s currently valid.

[`enum State`](/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/State-swift.enum)

An enumeration of possible states of a presentment intent assertion.

### Relinquishing presentment intent

[`func relinquish() async throws`](/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish())

Ends the presentment intent assertion.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)