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

# GKVoiceChatClient

The [`GKVoiceChatClient`](/documentation/GameKit/GKVoiceChatClient) protocol is implemented to control the behavior of the [`GKVoiceChatService`](/documentation/GameKit/GKVoiceChatService) object. The voice chat client has a number of responsibilities:

```
protocol GKVoiceChatClient : NSObjectProtocol
```

## Overview

- Provides a network connection that the voice chat service uses to send and receive configuration data with other participants. If this network connection is shared with other application data, the client must also disambiguate between chat configuration data and application data.
- Provides a participant ID that identifies the user to remote participants in the chat.
- Defines how a remote user’s participant ID translates into a network connection to that user.
- Accepts or rejects requests from remote participants to join the voice chat.

## Topics

### Getting Information about the Participant

[`participantID()`](/documentation/GameKit/GKVoiceChatClient/participantID())

Returns a string that uniquely identifies the local user.

### Sending data to other participants

[`voiceChatService(_:send:toParticipantID:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:send:toParticipantID:))

A request for the client to send data to a participant.

[`voiceChatService(_:sendRealTime:toParticipantID:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:sendRealTime:toParticipantID:))

Asks the client to send data to a participant that must get there quickly.

### Accepting Invitations from Remote Participants

[`voiceChatService(_:didReceiveInvitationFromParticipantID:callID:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:didReceiveInvitationFromParticipantID:callID:))

Asks the client to accept or reject an invitation from a remote participant.

### Responding to Changes in Other Participants

[`voiceChatService(_:didStartWithParticipantID:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:didStartWithParticipantID:))

Received by the client when a voice chat with another participant is established.

[`voiceChatService(_:didNotStartWithParticipantID:error:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:didNotStartWithParticipantID:error:))

Received by the client when an attempt to establish a voice chat with another participant failed.

[`voiceChatService(_:didStopWithParticipantID:error:)`](/documentation/GameKit/GKVoiceChatClient/voiceChatService(_:didStopWithParticipantID:error:))

Received by the client when a previously established voice chat has ended.



---

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)