A game session you can use to save game data, invite other players, and create turn-based and real-time game apps.


@interface GKGameSession : NSObject


Use a GKGameSession object to play turn-based and real-time games in iCloud. Every instance of a game session resides inside of an iCloud container. You can create multiple sessions for a single app, allowing players to play several games at once. All of the information for a game session is saved in the owner's iCloud.

Each session can contain a maximum of 100 players. Inside of a session, up to 16 of those players can be connected to each other in real-time. The 16 connected players can be selected from any of the 100 players in the session. You can change a connected player with another player in the session at any time.

After a game session is created, you can save game data in iCloud. Each game session can save a maximum of 512KB data. This prevents games from using a large about of space in a user's iCloud account. This data can be loaded, edited, and saved by anyone in the game session, providing your app provides this behavior. You must ensure that you delete a game session from a user's iCloud after a game is over, otherwise the session will stay in the user's iCloud forever. Game sessions are not automatically removed after a set amount of time. They can only be actively removed.


Creating and Loading Game Sessions

+ createSessionInContainer:withTitle:maxConnectedPlayers:completionHandler:

Creates a new game session inside of an iCloud container.

+ loadSessionsInContainer:completionHandler:

Retrieves all of the game sessions associated with a container.

+ removeSessionWithIdentifier:completionHandler:

Removes the specified game session.

Accessing Information About a Game Session


A unique identifier for a game session.


The date that the game session was last modified.


The last player to modify the game session.


The maximum number of players allowed to connect to the game session at the same time.


A player object that represents the owner of the game session.


An array of player objects associated with the game session.


The title of the game session.

Inviting Players to a Game Session

- getShareURLWithCompletionHandler:

Retrieves the URL used to share a game session.

Saving and Loading Data

- loadDataWithCompletionHandler:

Retrieves the game data from the current game session.

- saveData:completionHandler:

Saves the current game session data.

Listening for Events

+ addEventListener:

Adds a new event listener object.

+ removeEventListener:

Stops listening to the event listener object.

Connecting Players for Real-Time Communication

- setConnectionState:completionHandler:

Sets the connection state for the player.

- playersWithConnectionState:

Retrieves a list of players with the specified connection state.

- sendData:withTransportType:completionHandler:

Sends the indicated data to all connected players.


The mechanism used to send messages to other players in a game session.

Communicating Between Players


An array containing all of the currently badged players.

- clearBadgeForPlayers:completionHandler:

Clears the badge from the designated players.


Inherits From

See Also

Game Sessions


The object representing the currently signed-in iCloud user.


An event listener that handles game session events.


A user interface you can use to invite other users into a tvOS game session.


Error codes for the GKGameSession domain.


The error domain for game sessions.