<!--
{
  "availability" : [
    "iOS: 7.0.0 -",
    "iPadOS: 7.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.10.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 3.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "GameKit",
  "identifier" : "/documentation/GameKit/GKTurnBasedMatch/sendExchange(to:data:localizableMessageKey:arguments:timeout:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "GameKit"
    ],
    "preciseIdentifier" : "c:objc(cs)GKTurnBasedMatch(im)sendExchangeToParticipants:data:localizableMessageKey:arguments:timeout:completionHandler:"
  },
  "title" : "sendExchange(to:data:localizableMessageKey:arguments:timeout:completionHandler:)"
}
-->

# sendExchange(to:data:localizableMessageKey:arguments:timeout:completionHandler:)

Sends an exchange request that contains your game data to one or more participants.

```
func sendExchange(to participants: [GKTurnBasedParticipant], data: Data, localizableMessageKey key: String, arguments: [String], timeout: TimeInterval, completionHandler: (@Sendable (GKTurnBasedExchange?, (any Error)?) -> Void)? = nil)
```

## Parameters

`participants`

The other participants, excluding the local player and inactive participants, that GameKit sends the exchange request to.

`data`

The data that GameKit sends to the other participants.

`key`

The identifier for looking up the translated message in the default `Localized.strings` file. If you use a formatted string with specifiers, provide the arguments.

`arguments`

A list of arguments to substitute into the localized string if it’s formatted and contains specifiers.

`timeout`

The length of time a participant has to respond to the exchange request. The maximum value is 90 days.

`completionHandler`

The block that GameKit calls when it completes the request.

    The block receives the following parameters:

- exchange: The exchange object that GameKit passes to the other participants.
- *error*: Describes an error if it occurs, or `nil` if the operation completes. An error occurs if any of the participants are inactive.

## Discussion

If your game isn’t running or is in the background on recipient devices, a notification containing the localized message you pass to this method appears. When the participant taps or clicks the notification, GameKit launches or brings the game to the foreground and then invokes the [`player(_:receivedExchangeRequest:for:)`](/documentation/GameKit/GKTurnBasedEventListener/player(_:receivedExchangeRequest:for:)) method.

Implement the [`player(_:receivedExchangeRequest:for:)`](/documentation/GameKit/GKTurnBasedEventListener/player(_:receivedExchangeRequest:for:)) protocol method to handle the exchange request — for example, show an interface on the receiver’s device to accept or reject the exchange.

---

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)