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

# ProximityReaderDiscovery

An object that presents a UI with information about how to use
Tap to Pay on iPhone.

```
final class ProximityReaderDiscovery
```

## Overview

Use a [`ProximityReaderDiscovery`](/documentation/ProximityReader/ProximityReaderDiscovery) object to educate people
on how to read contactless credentials with their iPhone.
When building a reader interface in your app, include controls to display help
information. When a person taps those controls, use this type
to present a view controller with information about how to use
a particular feature. The system manages the
presented view controller, displaying materials to teach
people how the system works.

Create a [`ProximityReaderDiscovery`](/documentation/ProximityReader/ProximityReaderDiscovery) object in response to requests
for help from your app’s interface. Fetch a relevant help topic
and present that topic using the [`presentContent(_:from:)`](/documentation/ProximityReader/ProximityReaderDiscovery/presentContent(_:from:)) method, as
shown in the following example. Present the topic displays a new
view controller with information about how to use the relevant
features. This view controller remains visible until the person
dismisses it, at which point control returns to your app’s current
view controller.

```
let proximityReaderDiscovery = ProximityReaderDiscovery()

Task {
    do {
        let content = try await proximityReaderDiscovery.content(for: ProximityReaderDiscovery.Topic.payment(.howToTap))
        try await proximityReaderDiscovery.presentContent(content, from: myCurrentViewController)
    } catch {
        // Handle content display errors.
    }
}
```

## Topics

### Creating a discovery object

[`init()`](/documentation/ProximityReader/ProximityReaderDiscovery/init())

Creates a new proximity reader discovery object.

### Fetching the content to display

[`content(for:)`](/documentation/ProximityReader/ProximityReaderDiscovery/content(for:))

Fetches the content for the specified topic.

[`Topic`](/documentation/ProximityReader/ProximityReaderDiscovery/Topic)

The topics you can present to someone.

[`Content`](/documentation/ProximityReader/ProximityReaderDiscovery/Content)

A type that represents content you can display on the current device.

[`contentList`](/documentation/ProximityReader/ProximityReaderDiscovery/contentList)

The content you can present for the current device.

### Displaying the information

[`presentContent(_:from:)`](/documentation/ProximityReader/ProximityReaderDiscovery/presentContent(_:from:))

Presents a sheet that teaches merchants how to use the specified
feature.

### Getting relevant errors

[`ContentError`](/documentation/ProximityReader/ProximityReaderDiscovery/ContentError)

Errors that indicate a problem occurred when getting or showing content.

## Relationships

### Conforms To

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

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

---

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)