GKMatch
A GKMatch
объект обеспечивает одноранговую сеть между группой устройств, подключенных к Игровому Центру. Соответствия обеспечивают передачу и речь и игровые данные. Ваша игра никогда непосредственно выделяет GKMatch
объекты. Вместо этого это использует GKMatchmaker
класс, чтобы программно найти соответствие с другими заинтересованными проигрывателями или a GKMatchmakerViewController
возразите для отображения пользовательского интерфейса к проигрывателю.
После того, как Ваша игра получает объект соответствия, установила его делегата и затем ожидает, пока другие участники не подключены к соответствию. Можно читать expectedPlayerCount
свойство для определения, сколько плееров не подключило к соответствию.
Каждое устройство в соответствии идентифицируется идентификатором проигрывателя для проигрывателя, аутентифицируемого на том устройстве. Ваша игра передает свои собственные данные к другим проигрывателям путем вызова любого sendDataToAllPlayers:withDataMode:error:
метод или sendData:toPlayers:withDataMode:error:
метод. Для разрешения голосового чата вызвать voiceChatWithName:
создать один или несколько речевых каналов.
Когда Вы закончите с соответствием, вызовите соответствие disconnect
метод.
Оператор импорта
Swift
import GameKit
Objective C
@import GameKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Делегат к соответствию.
Объявление
Swift
unowned(unsafe) var delegate: GKMatchDelegate!
Objective C
@property(nonatomic, assign) id< GKMatchDelegate > delegate
Обсуждение
Необходимо установить делегата для получения данных от других участников соответствия.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-
expectedPlayerCount expectedPlayerCount
СвойствоОстающееся число игроков, кто еще не соединился с соответствием. (только для чтения)
Объявление
Swift
var expectedPlayerCount: Int { get }
Objective C
@property(nonatomic, readonly) NSUInteger expectedPlayerCount
Обсуждение
Значение этого свойства постепенно уменьшается каждый раз, когда проигрыватель соединяется с соответствием. Когда достигает его значение
0
, подключаются все ожидаемые плееры, и Ваша игра может начать матч.Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-
проигрыватели проигрыватели
СвойствоМассив
GKPlayer
объекты, представляющие проигрыватели в соответствии. (только для чтения)Объявление
Swift
var players: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *players
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.10 и позже.
-
Массив
NSString
объекты, содержащие идентификаторы проигрывателя для удаленных проигрывателей в соответствии. (только для чтения)Объявление
Swift
var playerIDs: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *playerIDs
Обсуждение
playerIDs
свойство первоначально включает идентификаторы проигрывателя для любых удаленных плееров, уже подключенных к соответствию; массив может первоначально быть пустым. Поскольку каждый новый проигрыватель соединяется с соответствием, что идентификатор проигрывателя добавляется к массиву. Идентификатор проигрывателя для местного игрока не включен в этот массив.Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
См. также
-
Определяет лучший проигрыватель в игре для действия как сервер для соответствия клиент-сервер.
Объявление
Swift
func chooseBestHostingPlayerWithCompletionHandler(_
completionHandler
: ((GKPlayer!) -> Void)!)Objective C
- (void)chooseBestHostingPlayerWithCompletionHandler:(void (^)(GKPlayer *player))
completionHandler
Параметры
completionHandler
Был определен блок, который вызовут после лучшего проигрывателя.
Блок получает следующий параметр:
player
GKPlayer
объект, идентифицирующий проигрыватель с лучшей предполагаемой производительностью сети, илиnil
если не мог бы в настоящее время определяться проигрыватель.Обсуждение
Вызов этого метода заставляет Гэйма Кита пытаться оценить, какой проигрыватель имеет лучшее полное сетевое соединение с помощью множества метрик, таких как пропускная способность, задержка и надежность сети. Когда Ваша игра реализует клиент-серверную модель поверх однорангового соединения соответствия, Как правило, Вы вызываете этот метод. Посмотрите Разработку Вашей Сети Гэйм.
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.10 и позже.
-
Данные передач к списку подключенных плееров.
Объявление
Swift
func sendData(_
data
: NSData!, toPlayersplayers
: [AnyObject]!, dataModemode
: GKMatchSendDataMode, errorerror
: NSErrorPointer) -> BoolObjective C
- (BOOL)sendData:(NSData *)
data
toPlayers:(NSArray *)players
dataMode:(GKMatchSendDataMode)mode
error:(NSError **)error
Параметры
data
Байты, которые будут отправлены.
players
Массив
GKPlayer
объекты, содержащие строки идентификатора для списка проигрывателей, кто должен получить данные.mode
Механизм раньше отправлял данные.
error
Если данные не могли бы быть поставлены в очередь по возврату, этот параметр содержит
NSError
объект, описывающий ошибку.Возвращаемое значение
YES
true
если данные были успешно поставлены в очередь для передачи;NO
false
если соответствие было неспособно поставить данные в очередь.Обсуждение
Когда сеть становится доступной, соответствие ставит данные в очередь и передает их.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.10 и позже.
-
Данные передач ко всем проигрывателям соединились с соответствием.
Объявление
Swift
func sendDataToAllPlayers(_
data
: NSData!, withDataModemode
: GKMatchSendDataMode, errorerror
: NSErrorPointer) -> BoolObjective C
- (BOOL)sendDataToAllPlayers:(NSData *)
data
withDataMode:(GKMatchSendDataMode)mode
error:(NSError **)error
Параметры
data
Байты, которые будут отправлены.
mode
Механизм раньше отправлял данные.
error
Если данные не могли бы быть поставлены в очередь по возврату, этот параметр содержит
NSError
объект, описывающий ошибку.Возвращаемое значение
YES
true
если данные были успешно поставлены в очередь для передачи;NO
false
если соответствие было неспособно поставить данные в очередь.Обсуждение
Когда сеть становится доступной, соответствие ставит данные в очередь и передает их.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-
chooseBestHostPlayerWithCompletionHandler (_:) - chooseBestHostPlayerWithCompletionHandler:
(OS X v10.10)Определяет лучший проигрыватель в игре для действия как сервер для соответствия клиент-сервер.
Объявление
Swift
func chooseBestHostPlayerWithCompletionHandler(_
completionHandler
: ((String!) -> Void)!)Objective C
- (void)chooseBestHostPlayerWithCompletionHandler:(void (^)(NSString *playerID))
completionHandler
Параметры
completionHandler
Был определен блок, который вызовут после лучшего проигрывателя.
Блок получает следующий параметр:
playerID
Идентификатор проигрывателя для проигрывателя с лучшей предполагаемой производительностью сети, или
nil
если не мог бы в настоящее время определяться проигрыватель.Обсуждение
Вызов этого метода заставляет Гэйма Кита пытаться оценить, какой проигрыватель имеет лучшее полное сетевое соединение с помощью множества метрик, таких как пропускная способность, задержка и надежность сети. Когда Ваша игра реализует клиент-серверную модель поверх однорангового соединения соответствия, Как правило, Вы вызываете этот метод. Посмотрите Разработку Вашей Сети Гэйм.
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.9 и позже.
Осуждаемый в OS X v10.10.
-
Данные передач к списку подключенных плееров.
Объявление
Swift
func sendData(_
data
: NSData!, toPlayersplayerIDs
: [AnyObject]!, withDataModemode
: GKMatchSendDataMode, errorerror
: NSErrorPointer) -> BoolObjective C
- (BOOL)sendData:(NSData *)
data
toPlayers:(NSArray *)playerIDs
withDataMode:(GKMatchSendDataMode)mode
error:(NSError **)error
Параметры
data
Байты, которые будут отправлены.
playerIDs
Массив
NSString
объекты, содержащие строки идентификатора для списка проигрывателей, кто должен получить данные.mode
Механизм раньше отправлял данные.
error
Если данные не могли бы быть поставлены в очередь по возврату, этот параметр содержит
NSError
объект, описывающий ошибку.Возвращаемое значение
YES
true
если данные были успешно поставлены в очередь для передачи;NO
false
если соответствие было неспособно поставить данные в очередь.Обсуждение
Когда сеть становится доступной, соответствие ставит данные в очередь и передает их.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
-
Присоединяется к речевому каналу.
Объявление
Swift
func voiceChatWithName(_
name
: String!) -> GKVoiceChat!Objective C
- (GKVoiceChat *)voiceChatWithName:(NSString *)
name
Параметры
name
Канал для присоединения.
Возвращаемое значение
Автовыпущенный голосовой чат возражает для речевого канала, или
nil
если произошла ошибка.Обсуждение
Вызов этого метода присоединяется к речевому каналу, создавая его при необходимости. Ваша игра должна сохранить сильную ссылку к объекту голосового чата, пока проигрыватель не оставляет канал. Все участники, присоединяющиеся к каналу с тем же именем, подключены друг к другу.
Единственное соответствие может иметь многократные каналы голосового чата, и любой проигрыватель в соответствии может присоединиться к многократным каналам одновременно. Например, основанная на команде игра могла бы создать канал для каждой команды и единственный канал, включающий все проигрыватели.
Объекты голосового чата зависят от сетевого соединения, предоставленного соответствием. Когда разъединения проигрывателя от соответствия, все речевые каналы связались с той остановкой соответствия работать. Как правило, необходимо выйти из любых речевых каналов и выпустить любые сильные ссылки к каналам прежде, чем разъединиться от соответствия.
Родительский контроль может препятствовать тому, чтобы проигрыватель присоединился к голосовому чату. Если проигрывателю не разрешают присоединиться к речевому каналу, a
nil
объект возвращается к Вашему приложению.Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-
Разъединяет местного игрока от соответствия.
Объявление
Swift
func disconnect()
Objective C
- (void)disconnect
Обсуждение
Ваша игра должна вызвать
disconnect
прежде, чем удалить последнюю сильную ссылку к объекту соответствия. Вызовdisconnect
уведомляет другие проигрыватели, что Вы оставили соответствие.Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-
Создайте новое соответствие со списком проигрывателей от существующего соответствия.
Объявление
Objective C
- (void)rematchWithCompletionHandler:(void (^)(GKMatch *match, NSError *error))
completionHandler
Параметры
completionHandler
Создается блок, который вызовут после соответствия.
Блок получает следующий параметр:
match
Новое соответствие. Если ошибка произошла, значение этого параметра
nil
.error
Если ошибка произошла, этот параметр содержит ошибочный объект, описывающий проблему. Если соответствие было успешно воссоздано, значение этого параметра
nil
.Обсуждение
Вызов этого метода использует автосоответствие для воссоздания предыдущего соответствия. Новое соответствие с тем же набором проигрывателей создается и возвращается. Если Ваша игра пытается воссоздать соответствия с помощью этого метода, каждый экземпляр игры на каждом устройстве должен вызвать этот метод.
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.9 и позже.
Типы данных
-
Механизм раньше передавал данные к другим проигрывателям.
Объявление
Swift
enum GKMatchSendDataMode : Int { case Reliable case Unreliable }
Objective C
enum { GKMatchSendDataReliable, GKMatchSendDataUnreliable }; typedef NSInteger GKMatchSendDataMode;
Константы
-
Reliable
GKMatchSendDataReliable
Данные отправляются постоянно, пока они успешно не получены предполагаемыми получателями или времена соединения. Используйте это, когда необходимо гарантировать поставку, и скорость не критически важна.
Надежные передачи поставлены в порядке, который они были отправлены.
Доступный в OS X v10.8 и позже.
-
Unreliable
GKMatchSendDataUnreliable
Если ошибка передачи происходит, данные отправляются один раз и не отправляются снова. Используйте это для небольших пакетов данных, которые должны поступить быстро, чтобы быть полезными для получателя.
Данные, переданные ненадежно, могут быть получены не в порядке получателями. Как правило, Вы создаете свою собственную специфичную для игры обработку ошибок поверх этого механизма.
Доступный в OS X v10.8 и позже.
Оператор импорта
Objective C
@import GameKit;
Swift
import GameKit
Доступность
Доступный в OS X v10.8 и позже.
-