GKMatch object provides a peer-to-peer network between a group of devices that are connected to Game Center. Matches provide transmit both voice and game data. Your game never directly allocates
GKMatch objects. Instead, it uses the
GKMatchmaker class to programmatically find a match with other interested players or a
GKMatchmakerViewController object to display a user interface to the player.
- iOS 4.1+
- macOS 10.8+
- tvOS 4.1+
After your game receives a match object, set its delegate and then wait until the other participants are connected to the match. You can read the
expectedPlayerCount property to determine how many players have not connected to the match.
Each device in the match is identified by the player identifier for the player authenticated on that device. Your game transmits its own data to other players by calling either the
sendData(toAllPlayers:with:) method or the
send(_:toPlayers:with:) method. To allow voice chat, call
voiceChat(withName:) to create one or more voice channels.
When you are finished with the match, call the match’s
disconnect() method. Before you release your last reference to a
GKMatch object, make sure you set the delegate back to
nil. Otherwise a match you thought was long gone can suddenly call
match(_:player:didChange:) when you are in the middle of the next game.