GKSession
Оператор импорта
Swift
import GameKit
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
A GKSession
объект предоставляет возможность, чтобы обнаружить и соединиться с соседними устройствами на iOS с помощью Bluetooth или Wi-Fi.
Сеансы прежде всего работают с коллегами. Коллега является любым устройством на iOS, сделанным видимым путем создания и конфигурирования a GKSession
объект. Каждая коллега идентифицируется уникальным идентификатором, названным равноправным ID (peerID
) строка. Ваше приложение может использовать a peerID
строка, чтобы получить читаемое пользователем имя для удаленного узла и попытаться соединиться с той коллегой. Точно так же коллега Вашего сеанса ID видима другим соседним коллегам. После того, как соединение установлено, Ваше приложение использует ID удаленного узла для пакетов адресных сведений, которые это хочет отправить.
Коллеги обнаруживают, что другие равноправные узлы при помощи уникальной строки идентифицируют службу, которую они реализуют, названный сеансом ID (sessionID
). Сеансы могут быть сконфигурированы, чтобы широковещательно передать сеанс ID (как сервер), искать другие коллеги, распространяющиеся с тем сеансом ID (как клиент) или действовать и как сервер и как клиент одновременно (как коллега.
Ваше управление приложениями поведение сеанса через делегата, реализующего GKSessionDelegate
протокол. Делегата вызывают, когда удаленные узлы обнаружены, когда те коллеги пытаются соединиться с сеансом, и когда изменяется состояние удаленного узла. Ваше приложение также обеспечивает обработчик данных для сеанса так, чтобы сеанс мог передать данные, которые это получает от удаленных узлов. Обработчик данных может быть отдельным объектом или тем же объектом как делегат.
Когда Bluetooth включен, скорости загрузки Wi-Fi решительно уменьшаются, в то время как устройство ищет другие устройства с поддержкой Bluetooth. После того, как время открытия Bluetooth завершилось, скорости Wi-Fi возвращаются к нормальному.
GKSession
методы ориентированы на многопотоковое исполнение и могут быть вызваны от любого потока. Однако сеанс всегда вызывает своего делегата на основном потоке.
-
Инициализирует и возвращает недавно выделенный сеанс.
Объявление
Objective C
- (id)initWithSessionID:(NSString *)
sessionID
displayName:(NSString *)name
sessionMode:(GKSessionMode)mode
Параметры
sessionID
Уникальная строка, идентифицирующая Ваше приложение. Ваш
sessionID
должно быть краткое название утвержденного типа службы Bonjour. Еслиnil
, сеанс использует идентификатор пакета приложения для создания asessionID
строка.name
Строка, идентифицирующая пользователя для отображения другим коллегам. Если
nil
, сеанс использует имя устройства.mode
Режим сеанс должен работать в. Посмотрите Режимы Сеанса для возможных значений.
Возвращаемое значение
Инициализированный объект сеанса, или
nil
если произошла ошибка.Обсуждение
Только сеансы, работающие с тем же
sessionID
видимы к Вашему сеансу.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
Делегат объекта сеанса.
Объявление
Objective C
@property(assign) id< GKSessionDelegate > delegate
Обсуждение
Делегат сеанса ответственен за наблюдение изменений в других коллегах, работающих с тем же сеансом ID. Ваше приложение должно установить делегата прежде, чем сделать Ваш сеанс известным другим коллегам.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
Булево значение, определяющее, хочет ли сеанс соединиться с новыми коллегами.
Объявление
Objective C
@property(getter=isAvailable) BOOL available
Обсуждение
Когда
available
YES
true
, сеанс видим другим коллегам на основеsessionMode
свойство. Когдаavailable
установлен вNO
false
, это остается связанным с коллегами, но больше не видимо несвязанным коллегам. Значение по умолчаниюNO
false
.Как правило, Ваше приложение конфигурирует объект сеанса с делегатом и получателем данных, и затем устанавливает
available
кYES
true
. Когда делегат заканчивает соединяться с коллегами, это должно установить сеансavailable
свойство кNO
false
.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
- peersWithConnectionState:
(iOS 7.0)Возвращает список коллег в указанном состоянии соединения.
Объявление
Objective C
- (NSArray *)peersWithConnectionState:(GKPeerConnectionState)
state
Параметры
state
Состояние соединения для поиска. Посмотрите Состояния соединения для возможных значений.
Возвращаемое значение
Массив
NSString
объекты с apeerID
строка для каждой коллеги, видимой к сеансу, который в настоящее время находится в указанном состоянии соединения. Если нет никаких коллег в указанном состоянии соединения, этот метод возвратыnil
.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
- displayNameForPeer:
(iOS 7.0)Возвращает читаемое пользователем имя для коллеги.
Параметры
peerID
Строка, однозначно определяющая коллегу.
Возвращаемое значение
Имя для коллеги, или
nil
еслиpeerID
не связан с видимой коллегой.Обсуждение
Имя дисплея используется для заполнения пользовательского интерфейса с именами других коллег, видимых к сеансу.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- connectToPeer:withTimeout:
(iOS 7.0)Создает соединение с другим устройством на iOS.
Объявление
Objective C
- (void)connectToPeer:(NSString *)
peerID
withTimeout:(NSTimeInterval)timeout
Параметры
peerID
Строка, идентифицирующая коллегу для соединения с.
timeout
Количество времени для ожидания прежде, чем отменить попытку подключения.
Обсуждение
Когда Ваше приложение действует как клиент, оно вызывает этот метод для соединения с доступным равноправным узлом, который оно обнаружило. Когда Ваше приложение вызывает этот метод, запрос передается к удаленному узлу, кто выбирает, принять ли или отклонить запрос на установление соединения.
Если соединение с удаленным узлом успешно, делегат
session:peer:didChangeState:
метод вызывают для каждой коллеги, с которой он успешно соединился. Если сбои соединения или Ваше приложение отменяют попытку подключения, сеанс вызывает делегатаsession:connectionWithPeerFailed:withError:
метод.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- cancelConnectToPeer:
(iOS 7.0)Отменяет незаконченный запрос для соединения с другим устройством на iOS.
Объявление
Objective C
- (void)cancelConnectToPeer:(NSString *)
peerID
Параметры
peerID
Строка, идентифицирующая коллегу, Вы ранее запросили соединиться с.
Обсуждение
Ваше приложение ранее вызывают
connectToPeer:withTimeout:
создать соединение с другим устройством на iOS. Когда Ваше приложение отменяет попытку подключения, оба делегатаsession:connectionWithPeerFailed:withError:
методы вызывают.Если бы Ваше приложение уже соединилось с коллегой, то Ваше приложение должно вызвать
disconnectFromAllPeers
вместо этого.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- acceptConnectionFromPeer:error:
(iOS 7.0)Вызванный делегатом для принятия запроса на установление соединения, полученного от удаленного узла.
Параметры
peerID
Строка, идентифицирующая коллегу, инициировавшую соединение с сеансом.
error
Когда соединение коллеги, по возврату содержит, если произошла ошибка
NSError
объект, объясняющий проблему.Возвращаемое значение
YES
true
если соединение было установлено к удаленному узлу;NO
false
если произошла ошибка.Обсуждение
Когда Ваш сеанс действует как сервер, клиентские коллеги могут обнаружить Ваш сеанс и попытку соединиться с ним. Когда клиент пытается соединиться с сеансом, делегат
session:didReceiveConnectionRequestFromPeer:
метод вызывают, чтобы решить, должна ли быть соединена коллега. Ваше приложение вызывает этот метод для принятия запроса, илиdenyConnectionFromPeer:
отклонить его.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- denyConnectionFromPeer:
(iOS 7.0)Вызванный делегатом для отклонения запроса на установление соединения, полученного от удаленного узла.
Объявление
Objective C
- (void)denyConnectionFromPeer:(NSString *)
peerID
Параметры
peerID
Строка, идентифицирующая коллегу, инициировавшую соединение с сеансом.
Обсуждение
Когда Ваш сеанс действует как сервер, клиентские коллеги могут обнаружить Ваш сеанс и попытку соединиться с ним. Когда клиент пытается соединиться с сеансом, делегат
session:didReceiveConnectionRequestFromPeer:
метод вызывают, чтобы решить, должна ли быть соединена коллега. Ваше приложение вызывает этот метод для отклонения запроса илиacceptConnectionFromPeer:error:
принять его.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- setDataReceiveHandler:withContext:
(iOS 7.0)Устанавливает объект, обрабатывающий данные, полученные от других коллег, подключенных к сеансу.
Объявление
Objective C
- (void)setDataReceiveHandler:(id)
handler
withContext:(void *)context
Параметры
handler
Объект, который Вы хотите, чтобы сеанс вызвал, когда это получает данные от других коллег.
context
Произвольные данные, которые будут переданы каждому вызову обработчика.
Обсуждение
Обработчик должен реализовать метод со следующей подписью:
- (void) receiveData:(NSData *)
data
fromPeer:(NSString *)
peer
inSession: (GKSession *)
session
context:(void *)
context
;
где данные содержат байты, полученные от удаленного узла, коллега является строкой, идентифицирующей коллегу, сеанс является сеансом, получившим данные, и контекст является тем же контекстом, переданным в первоначальный вызов
setDataReceiveHandler:withContext:
.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
- sendData:toPeers:withDataMode:error:
(iOS 7.0)Передает набор байтов к списку связанных коллег.
Объявление
Objective C
- (BOOL)sendData:(NSData *)
data
toPeers:(NSArray *)peers
withDataMode:(GKSendDataMode)mode
error:(NSError **)error
Параметры
data
Байты, которые будут отправлены.
peers
Массив
NSString
объекты, идентифицирующие коллеги, которые должны получить данные.mode
Механизм раньше отправлял данные.
error
Если данные не могли бы быть поставлены в очередь,
NSError
объект, описывающий ошибку.Возвращаемое значение
YES
true
если данные были успешно поставлены в очередь для передачи;NO
false
если объект сеанса был неспособен поставить данные в очередь.Обсуждение
Сеанс ставит данные в очередь и передает их в порядке, они были поставлены в очередь. Данные, переданные ненадежно, могут быть получены не в порядке другими коллегами.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- sendDataToAllPeers:withDataMode:error:
(iOS 7.0)Передает набор байтов всем связанным коллегам.
Объявление
Objective C
- (BOOL)sendDataToAllPeers:(NSData *)
data
withDataMode:(GKSendDataMode)mode
error:(NSError **)error
Параметры
data
Байты, которые будут отправлены.
mode
Механизм раньше отправлял данные.
error
Если данные не могли бы быть поставлены в очередь,
NSError
объект, описывающий ошибку.Возвращаемое значение
YES
true
если данные были успешно поставлены в очередь для передачи;NO
false
если объект сеанса был неспособен поставить данные в очередь.Обсуждение
Когда сеть свободна, сеанс ставит данные в очередь и передает их.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
Временной интервал, что экспрессы, сколько времени сеанс ожидает, прежде чем он разъединит небыстро реагирующую коллегу.
Объявление
Objective C
@property(assign) NSTimeInterval disconnectTimeout
Обсуждение
Тайм-аут является временем ожидания прежде, чем разъединить коллегу от сеанса. Если коллега разъединяется, делегат
session:peer:didChangeState:
метод вызывают.Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
- disconnectFromAllPeers
(iOS 7.0)Разъединяет сеанс от всех связанных коллег.
Объявление
Objective C
- (void)disconnectFromAllPeers
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
- disconnectPeerFromAllPeers:
(iOS 7.0)Разъединяет связанную коллегу от всех коллег, подключенных к сеансу.
Объявление
Objective C
- (void)disconnectPeerFromAllPeers:(NSString *)
peerID
Параметры
peerID
Строка, идентифицирующая коллегу для разъединения.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
Имя пользователя. (только для чтения)
Объявление
Objective C
@property(readonly) NSString *displayName
Обсуждение
Имя дисплея передается видимым коллегам так, чтобы они могли представить человекочитаемое имя для Вашего сеанса.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
Строка, идентифицирующая Ваш сеанс для других коллег. (только для чтения)
Объявление
Objective C
@property(readonly) NSString *peerID
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
Строка раньше фильтровала список коллег, которым разрешают видеть Ваш сеанс. (только для чтения)
Объявление
Objective C
@property(readonly) NSString *sessionID
Обсуждение
Сеанс ID используется сеансами, сконфигурированными как серверы для распространения себя другим коллегам и сеансами, сконфигурированными как клиенты для поиска совместимых серверов. Сеанс ID должен быть кратким названием утвержденного типа службы Bonjour.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
Режим использование сеанса для нахождения других коллег. (только для чтения)
Объявление
Objective C
@property(readonly) GKSessionMode sessionMode
Обсуждение
Режим сеанса изменяет поведение сеанса когда
available
установлен вYES
true
.A
GKSessionModeServer
сеанс распространяет себя к локальным устройствам с помощью его сеанса ID.A
GKSessionModeClient
сеанс ищет локальные устройства, распространяя тот же сеанс ID. Поскольку это обнаруживает доступные и совместимые равноправные узлы, это вызывает делегатаsession:peer:didChangeState:
метод.A
GKSessionModePeer
сеанс и распространяется как сервер и ищет как клиент.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
Механизм раньше передавал данные другим коллегам.
Объявление
Objective C
typedef enum { GKSendDataReliable, GKSendDataUnreliable, } GKSendDataMode;
Константы
-
GKSendDataReliable
Данные отправляются постоянно, пока они успешно не получены предполагаемыми получателями или времена соединения.
Надежные передачи поставлены в порядке, который они были отправлены. Используйте это, когда необходимо будет гарантировать поставку.
Доступный в iOS 3.0 и позже.
-
GKSendDataUnreliable
Если ошибка передачи произошла, данные отправляются один раз и не отправляются снова.
Данные, переданные ненадежно, могут быть получены не в порядке получателями. Используйте это для небольших пакетов данных, которые должны поступить быстро, чтобы быть полезными для получателя.
Доступный в iOS 3.0 и позже.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
-
Режимы, определяющие, как сеанс взаимодействует с другими коллегами.
Объявление
Objective C
typedef enum { GKSessionModeServer, GKSessionModeClient, GKSessionModePeer, } GKSessionMode;
Константы
-
GKSessionModeServer
Сервер распространяет себя к локальным устройствам с помощью
sessionID
свойство.Доступный в iOS 3.0 и позже.
-
GKSessionModeClient
Клиент ищет серверы, распространяя то же
sessionID
свойство.Доступный в iOS 3.0 и позже.
-
GKSessionModePeer
Коллега распространяется как сервер и ищет как клиент.
Доступный в iOS 3.0 и позже.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
-
Состояние коллеги, известной сеансу.
Объявление
Objective C
typedef enum { GKPeerStateAvailable, GKPeerStateUnavailable, GKPeerStateConnected, GKPeerStateDisconnected, GKPeerStateConnecting } GKPeerConnectionState;
Константы
-
GKPeerStateAvailable
Коллега не соединилась с сеансом, но тем, с которым может соединиться сеанс.
Доступный в iOS 3.0 и позже.
-
GKPeerStateUnavailable
Коллега, больше не интересующаяся получением соединений.
Доступный в iOS 3.0 и позже.
-
GKPeerStateConnected
Коллега соединилась с сеансом.
Доступный в iOS 3.0 и позже.
-
GKPeerStateDisconnected
Коллега, разъединившаяся от сеанса.
Доступный в iOS 3.0 и позже.
-
GKPeerStateConnecting
Коллега, пытающаяся соединяться с сеансом.
Доступный в iOS 3.0 и позже.
Обсуждение
Состояния не являются взаимоисключающими. Например, коллега может быть доступна другим коллегам для обнаружения, в то время как это пытается соединиться с другой коллегой.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-
-
GKSession
ошибочный домен.Объявление
Swift
let GKSessionErrorDomain: String
Objective C
NSString * const GKSessionErrorDomain;
Константы
-
Коды ошибки для
GKSession
ошибочный домен.Объявление
Objective C
typedef enum { GKSessionInvalidParameterError = 30500, GKSessionPeerNotFoundError = 30501, GKSessionDeclinedError = 30502, GKSessionTimedOutError = 30503, GKSessionCancelledError = 30504, GKSessionConnectionFailedError = 30505, GKSessionConnectionClosedError = 30506, GKSessionDataTooBigError = 30507, GKSessionNotConnectedError = 30508, GKSessionCannotEnableError = 30509, GKSessionInProgressError = 30510, GKSessionConnectivityError = 30201, GKSessionTransportError = 30202, GKSessionInternalError = 30203, GKSessionUnknownError = 30204, GKSessionSystemError = 30205 } GKSessionError;
Константы
-
GKSessionInvalidParameterError
Параметр имел неожиданное значение.
Доступный в iOS 3.0 и позже.
-
GKSessionPeerNotFoundError
Коллега с указанным
peerID
строка не могла быть найдена.Доступный в iOS 3.0 и позже.
-
GKSessionDeclinedError
Коллега Ваше приложение попыталась подключить к отказанному соединение.
Доступный в iOS 3.0 и позже.
-
GKSessionTimedOutError
В указанный период тайм-аута не могла быть завершена работа.
Доступный в iOS 3.0 и позже.
-
GKSessionCancelledError
Коллега, пригласившая сеанс соединяться с ними, отменила запрос на установление соединения.
Доступный в iOS 3.0 и позже.
-
GKSessionConnectionFailedError
Попытка установить соединение с другой коллегой перестала работать.
Доступный в iOS 3.0 и позже.
-
GKSessionConnectionClosedError
Соединение с другой коллегой неожиданно закрылось.
Доступный в iOS 3.0 и позже.
-
GKSessionDataTooBigError
Данные, которые Ваше приложение попыталось отправить, были слишком большими для сеанса для передачи в единственном вызове.
Доступный в iOS 3.0 и позже.
-
GKSessionNotConnectedError
Зарезервированный для будущего использования.
Доступный в iOS 3.0 и позже.
-
GKSessionCannotEnableError
Bluetooth не в настоящее время доступен.
Доступный в iOS 3.0 и позже.
-
GKSessionInProgressError
Коллега, с которой Ваше приложение попыталось соединиться, уже запросила соединение с Вашим сеансом.
Доступный в iOS 3.0 и позже.
-
GKSessionConnectivityError
Ошибка произошла в
GKSession
код соединения объекта.Доступный в iOS 3.0 и позже.
-
GKSessionTransportError
Ошибка произошла в
GKSession
транспортный код объекта.Доступный в iOS 3.0 и позже.
-
GKSessionInternalError
Серьезная ошибка произошла внутри
GKSession
.Доступный в iOS 3.0 и позже.
-
GKSessionUnknownError
Зарезервированный для того, когда ошибка не помещается в другую категорию выше.
Доступный в iOS 3.0 и позже.
-
GKSessionSystemError
Ошибка произошла за пределами
GKSession
управление объекта, такое как выделение памяти.Доступный в iOS 3.0 и позже.
Оператор импорта
Objective C
@import GameKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 7.0.
-