<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ProximityReader",
  "identifier" : "/documentation/ProximityReader/CustomerEngagementSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ProximityReader"
    ],
    "preciseIdentifier" : "s:15ProximityReader25CustomerEngagementSessionC"
  },
  "title" : "CustomerEngagementSession"
}
-->

# CustomerEngagementSession

The object you use to share and request customer information.

```
final class CustomerEngagementSession
```

## Topics

### Configuring a session

[`struct Configuration`](/documentation/ProximityReader/CustomerEngagementSession/Configuration-swift.struct)

A set of configuration options for a customer engagement session.

[`let configuration: CustomerEngagementSession.Configuration`](/documentation/ProximityReader/CustomerEngagementSession/configuration-swift.property)

Configuration for this session.

[`func open(using: CustomerEngagement.Token?) async throws`](/documentation/ProximityReader/CustomerEngagementSession/open(using:))

Opens the engagement session.

[`func close() async throws`](/documentation/ProximityReader/CustomerEngagementSession/close())

Closes the engagement session.

[`struct Token`](/documentation/ProximityReader/CustomerEngagementSession/Token-swift.struct)

A session token.

### Getting customer configuration

[`struct CustomerConfiguration`](/documentation/ProximityReader/CustomerEngagementSession/CustomerConfiguration-swift.struct)

A structure that contains configuration details for the connected customer device.

[`var customerConfiguration: CustomerEngagementSession.CustomerConfiguration?`](/documentation/ProximityReader/CustomerEngagementSession/customerConfiguration-swift.property)

A structure containing configuration information of the customer device.

[`enum PeerClientType`](/documentation/ProximityReader/CustomerEngagementSession/PeerClientType)

A value that indicates the type of connected peer client.

### Getting events during a session

[`enum Event`](/documentation/ProximityReader/CustomerEngagementSession/Event)

Events that occur during a customer engagement session.

[`let events: any AsyncSequence<CustomerEngagementSession.Event, Never>`](/documentation/ProximityReader/CustomerEngagementSession/events)

An asynchronous sequence of events that occur during the engagement session.

### Requesting and getting customer information

[`func requestCustomerInfo(for: CustomerEngagementSession.Purpose?, fields: [CustomerEngagementSession.Field], message: String?) async throws -> CustomerEngagement.CustomerInfo`](/documentation/ProximityReader/CustomerEngagementSession/requestCustomerInfo(for:fields:message:))

Opens a form so that the customer can share the contact information.

[`func requestSignup(for: CustomerEngagementSession.Purpose, fields: [CustomerEngagementSession.Field], message: String?, emailConsent: CustomerEngagementSession.ConsentOption, smsConsent: CustomerEngagementSession.ConsentOption, termsAndConditions: String?) async throws -> CustomerEngagement.SignUp`](/documentation/ProximityReader/CustomerEngagementSession/requestSignup(for:fields:message:emailConsent:smsConsent:termsAndConditions:))

Opens a form so that the customer can share the contact information for the
purpose of sign-up activity.

[`func requestAddress(for: CustomerEngagementSession.Purpose?, fields: [CustomerEngagementSession.Field], message: String?) async throws -> CustomerEngagement.Address`](/documentation/ProximityReader/CustomerEngagementSession/requestAddress(for:fields:message:))

Opens a form so that the customer can share the postal address and additionally
collect email address and phone number.

[`func requestPayment(for: CustomerEngagement.ShoppingCartToken, using: PKPaymentRequest, delegate: any PKPaymentAuthorizationControllerDelegate) async throws -> Bool`](/documentation/ProximityReader/CustomerEngagementSession/requestPayment(for:using:delegate:))

Opens a form so a customer can select a payment option.

[`enum Purpose`](/documentation/ProximityReader/CustomerEngagementSession/Purpose)

The purpose of a customer information request.

[`enum Field`](/documentation/ProximityReader/CustomerEngagementSession/Field)

The contact information field in a customer request form.

[`enum ConsentOption`](/documentation/ProximityReader/CustomerEngagementSession/ConsentOption)

An option on the sign-up form to receive promotional emails and text messages.

### Updating the customer status and cart

[`func updateStatus(CustomerEngagement.Status) async throws`](/documentation/ProximityReader/CustomerEngagementSession/updateStatus(_:))

Updates the status on the customer’s screen.

[`func updateShoppingCart(CustomerEngagement.ShoppingCart) async throws -> CustomerEngagement.ShoppingCartToken`](/documentation/ProximityReader/CustomerEngagementSession/updateShoppingCart(_:))

Updates the shopping cart on the customer’s device.

### Adding a pass to Wallet

[`func addPass(Data) async throws -> Bool`](/documentation/ProximityReader/CustomerEngagementSession/addPass(_:))

Asks the customer to confirm adding a Pass to Wallet.

### Handling errors

[`enum Error`](/documentation/ProximityReader/CustomerEngagementSession/Error)

Errors that can occur during the engagement session.

### Initializers

[`init(configuration: CustomerEngagementSession.Configuration)`](/documentation/ProximityReader/CustomerEngagementSession/init(configuration:))

Creates a customer engagement session with the specified configuration.

### Instance Properties

[`let token: CustomerEngagementSession.Token`](/documentation/ProximityReader/CustomerEngagementSession/token-swift.property)

The session token.

## Relationships

### Conforms To

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Sendable`](/documentation/Swift/Sendable)

---

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)