<!--
{
  "availability" : [
    "iOS: 3.0.0 - 7.0.0",
    "iPadOS: 3.0.0 - 7.0.0",
    "visionOS: 1.0.0 - 1.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "GameKit",
  "identifier" : "/documentation/GameKit/GKPeerPickerController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "GameKit"
    ],
    "preciseIdentifier" : "c:objc(cs)GKPeerPickerController"
  },
  "title" : "GKPeerPickerController"
}
-->

# GKPeerPickerController

Provides a standard user interface to allow one iOS device to discover and connect to another.

```
class GKPeerPickerController
```

## Overview

The result is a configured [`GKSession`](/documentation/GameKit/GKSession) object connecting the two devices. To use a [`GKPeerPickerController`](/documentation/GameKit/GKPeerPickerController) object, your application creates the controller, adds a delegate, configures the allowed connection types, and then shows the peer picker. The delegate is called as the user makes selections within the peer picker interface.

In iOS 3.0, the peer picker can be configured to select between Bluetooth and Internet connections.

> Important:
> Although users can select Internet connections in the peer picker, ``doc://com.apple.gamekit/documentation/GameKit/GKPeerPickerController`` has no user interface for configuring them. If your application configures the peer picker to allow Internet connections, your application must also dismiss the peer picker and present its own interface to configure an Internet connection.

On iOS 3.0, your application should release the peer picker object after it dismisses the peer picker dialog. On iOS 3.1 or later, your application may release the peer picker after it is shown to the user. If you do this, the peer picker controller is automatically deallocated after the dialog is dismissed.

## Topics

### Instance Properties

### Setting and Getting the Delegate

[`delegate`](/documentation/GameKit/GKPeerPickerController/delegate)

The delegate of the peer picker controller.

### Instance Methods

### Displaying the Picker Dialog

[`-  dismiss`](/documentation/GameKit/GKPeerPickerController/dismiss())

Hides the peer picker dialog.

[`-  show`](/documentation/GameKit/GKPeerPickerController/show())

Displays the peer picker dialog to the user.

[`visible`](/documentation/GameKit/GKPeerPickerController/isVisible)

A Boolean value that indicates whether the picker dialog is visible.

### Configuring Connectivity Options

[`connectionTypesMask`](/documentation/GameKit/GKPeerPickerController/connectionTypesMask)

A mask that determines the types of connections a dialog presents to the user.

### Constants

[`GKPeerPickerConnectionType`](/documentation/GameKit/GKPeerPickerConnectionType)

Network connections available to the peer picker dialog.

## Relationships

### Conforms To

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

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

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

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

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

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)