MCSession
Оператор импорта
Swift
import MultipeerConnectivity
Objective C
@import MultipeerConnectivity;
Доступность
Доступный в iOS 7.0 и позже.
MCSession
объект включает и управляет коммуникацией среди всех коллег в Мультиравноправном сеансе Связи.
Инициирование сеанса
Для установки сеанса приложение должно сделать следующее:
Создайте
MCPeerID
объект, представляющий локальный узел и использующий его для инициализации объекта сеанса.Добавьте коллеги к сеансу с помощью объекта браузера, контроллера представления браузера, или вручную. (Сеансы в настоящее время поддерживают до 8 коллег, включая локальный узел.)
Ожидайте, пока сеанс не вызывает Ваш объект делегата
session:peer:didChangeState:
метод сMCSessionStateConnected
как новое состояние, вместе с объектом, говорящим Вам, какая коллега стала связанной.
Необходимо также установить ассистент рекламодателя или рекламодателя, чтобы позволить другим устройствам просить, чтобы приложение присоединилось к сеансу, который они создают.
Связь с коллегами
Как только Вы установили сеанс, Ваше приложение может отправить данные другим коллегам путем вызова одного из следующих методов:
sendData:toPeers:withMode:error:
отправляетNSData
возразите против указанных коллег.На каждом устройстве получателя, объект делегата
session:didReceiveData:fromPeer:
когда данные были полностью получены, метод вызывают с объектом данных.sendResourceAtURL:withName:toPeer:withCompletionHandler:
отправляет содержание отNSURL
возразите против указанной коллеги. URL может быть или локальным файлом URL или веб-URL.completionHandler
блок вызывают, когда ресурс полностью получен коллегой получателя или когда ошибка происходит во время передачи.Этот метод возвращается
NSProgress
возразите, что можно использовать, чтобы отменить передачу или проверить текущий статус передачи.На устройстве получателя сеанс вызывает свой объект делегата
session:didStartReceivingResourceWithName:fromPeer:withProgress:
метод, когда устройство начинает получать ресурс и вызываетsession:didFinishReceivingResourceWithName:fromPeer:atURL:withError:
метод, когда ресурс был полностью получен или когда происходит ошибка.startStreamWithName:toPeer:error:
создает связанный поток байтов (NSOutputStream
) то, что можно использовать, чтобы отправить данные указанной коллеге.На устройстве получателя сеанс вызывает свой объект делегата
session:didReceiveStream:withName:fromPeer:
метод сNSInputStream
объект, представляющий другую конечную точку коммуникации.С обеих сторон Ваш код должен установить делегата потока, запланировать поток на цикл выполнения и открыть поток. Ваш код должен также реализовать потоковые методы делегата управлять отправкой и получением потоковых данных.
Управление коллегами вручную
Если Вы решаете записать свой собственный равноправный код открытия (с NSNetService
или Добрый день C API, например), можно также вручную соединить соседние коллеги в сеанс. Чтобы сделать это, Ваше приложение должно сделать следующее:
Установите соединение с соседними коллегами и обменивайтесь, взаимодействуют с IDs с теми коллегами. Каждая коллега должна сериализировать его собственную локальную переменную
MCPeerID
объект сNSKeyedArchiver
, и принимающий пиринговый узел должен не сериализировать его сNSKeyedUnarchiver
.Данные подключения к станции. После получения объекта ID соседней коллеги вызвать
nearbyConnectionDataForPeer:withCompletionHandler:
для получения данных о соединении возражают определенный для той соседней коллеги.Когда блок обработчика завершения вызовут, отправьте получающийся объект данных о соединении той коллеге.
Когда Ваше приложение получает данные о соединении от другой коллеги, это должно вызвать
connectPeer:withNearbyConnectionData:
добавить что коллега к сеансу.
Можно также отменить выдающуюся попытку подключения путем вызова cancelConnectPeer:
.
Разъединение
Для отъезда сеанса приложение должно вызвать disconnect
.
-
Создает Мультиравноправный сеанс Связи.
Объявление
Swift
convenience init!(peer
myPeerID
: MCPeerID!)Objective C
- (instancetype)initWithPeer:(MCPeerID *)
myPeerID
Параметры
myPeerID
Локальный идентификатор, представляющий устройство, на котором в настоящее время работает Ваше приложение.
Возвращаемое значение
Возвращает инициализированный объект сеанса, или
nil
если происходит ошибка.Обсуждение
Этот метод эквивалентен вызову
initWithPeer:securityIdentity:encryptionPreference:
с anil
идентификационные данные иMCEncryptionOptional
как предпочтение шифрования.Если предоставленная коллега объект ID недопустима или, этот метод выдает исключение
nil
.Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
init (peer:securityIdentity:encryptionPreference:) - initWithPeer:securityIdentity:encryptionPreference:
Определяемый инициализаторСоздает Мультиравноправный сеанс Связи, обеспечивая информацию о безопасности.
Объявление
Swift
init!(peer
myPeerID
: MCPeerID!, securityIdentityidentity
: [AnyObject]!, encryptionPreferenceencryptionPreference
: MCEncryptionPreference)Objective C
- (instancetype)initWithPeer:(MCPeerID *)
myPeerID
securityIdentity:(NSArray *)identity
encryptionPreference:(MCEncryptionPreference)encryptionPreference
Параметры
myPeerID
Локальный идентификатор, представляющий устройство, на котором в настоящее время работает Ваше приложение.
identity
Массив, содержащий информацию, которая может использоваться для идентификации локального узла для других соседних коллег.
Первый объект в этом массиве должен быть a
SecIdentityRef
объект, обеспечивающий идентификационные данные локального узла.Остаток от массива должен содержать нуль или более дополнительный
SecCertificateRef
объекты, обеспечивающие любые промежуточные сертификаты, которых соседние коллеги могли бы потребовать при проверке идентификационных данных локального узла. Эти сертификаты должны быть отправлены в порядке цепочки сертификата.Когда Вы добавляете другие коллеги к сеансу, те коллеги получают сертификат Вашего локального узла (извлеченный из предоставленных идентификационных данных) и любые дополнительные сертификаты, которые Вы обеспечили. Это - ответственность принимающего пирингового узла проверить тот сертификат при желании.
encryptionPreference
Целочисленное значение, указывающее, требуется ли шифрование, предпочитается, или нежелательный.
Возвращаемое значение
Возвращает инициализированный объект сеанса, или
nil
если происходит ошибка.Обсуждение
Если предоставленная коллега объект ID недопустима или, этот метод выдает исключение
nil
.Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
delegate
СвойствоОбъект делегата, обрабатывающий связанные с сеансом события.
Объявление
Swift
weak var delegate: MCSessionDelegate!
Objective C
@property(weak, nonatomic) id< MCSessionDelegate > delegate
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
encryptionPreference
СвойствоУказывает, предпочитает ли соединение зашифрованные соединения, незашифрованные соединения, или не имеет никакого предпочтения. (только для чтения)
Объявление
Swift
var encryptionPreference: MCEncryptionPreference { get }
Objective C
@property(readonly, nonatomic) MCEncryptionPreference encryptionPreference
Обсуждение
Когда Вы инициализируете объект и не можете быть изменены позже, это значение установлено.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
myPeerID
СвойствоЛокальный идентификатор, представляющий устройство, на котором в настоящее время работает Ваше приложение. (только для чтения)
Объявление
Swift
var myPeerID: MCPeerID! { get }
Objective C
@property(readonly, nonatomic) MCPeerID *myPeerID
Обсуждение
Когда Вы инициализируете объект и не можете быть изменены позже, это значение установлено.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
securityIdentity
СвойствоИдентификационные данные безопасности локального узла. (только для чтения)
Объявление
Swift
var securityIdentity: [AnyObject]! { get }
Objective C
@property(readonly, nonatomic) NSArray *securityIdentity
Обсуждение
Когда Вы инициализируете объект и не можете быть изменены позже, это значение установлено. Для получения дополнительной информации на этом значении, см. документацию для
initWithPeer:securityIdentity:encryptionPreference:
.Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Подключите коллегу к сеансу вручную.
Объявление
Параметры
peerID
Равноправный узел объект ID получен от соседней коллеги.
data
Объект данных о соединении получен от соседней коллеги.
Обсуждение
Этот метод используется для соединения с коллегами при использовании собственного кода открытия службы. Для получения дополнительной информации посмотрите Управляющие Коллеги Вручную.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Отменяет попытку соединиться с коллегой.
Объявление
Swift
func cancelConnectPeer(_
peerID
: MCPeerID!)Objective C
- (void)cancelConnectPeer:(MCPeerID *)
peerID
Параметры
peerID
ID соседней коллеги.
Обсуждение
Этот метод используется для отмены соединений с коллегами при использовании собственного кода открытия службы. Это нужно вызвать в двух ситуациях:
Если Ваше приложение вызывает
connectPeer:withNearbyConnectionData:
и позже решает отменить попытку подключенияЕсли Ваше приложение получило соседние данные о соединении для коллеги и позже решает не соединиться с ними
Для получения дополнительной информации посмотрите Управляющие Коллеги Вручную.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
connectedPeers
СвойствоМассив всех коллег, в настоящее время подключающихся к этому сеансу. (только для чтения)
Объявление
Swift
var connectedPeers: [AnyObject]! { get }
Objective C
@property(readonly, nonatomic) NSArray *connectedPeers
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
nearbyConnectionDataForPeer (_: withCompletionHandler:) - nearbyConnectionDataForPeer:withCompletionHandler:
Получает данные о соединении для указанной коллеги.
Объявление
Параметры
peerID
Равноправный объект ID получил от соседней коллеги, которую Вы хотите добавить к сеансу.
completionHandler
Обработчик, который вызывают, когда данные о соединении доступны или когда происходит ошибка.
Обсуждение
Этот метод обеспечивает данные о соединении, требующиеся при добавлении определенной соседней коллеги к сеансу, если Вы используете свой собственный код открытия службы. Для получения дополнительной информации посмотрите Управляющие Коллеги Вручную.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Отправляет сообщение, инкапсулировавшее в
NSData
возразите против соседних коллег.Объявление
Swift
func sendData(_
data
: NSData!, toPeerspeerIDs
: [AnyObject]!, withModemode
: MCSessionSendDataMode, errorerror
: NSErrorPointer) -> BoolObjective C
- (BOOL)sendData:(NSData *)
data
toPeers:(NSArray *)peerIDs
withMode:(MCSessionSendDataMode)mode
error:(NSError **)error
Параметры
data
Объект, содержащий сообщение для отправки.
peerIDs
Массив коллеги объекты ID, представляющие коллеги, которые должны получить сообщение.
mode
Режим передачи для использования (надежная или ненадежная поставка).
error
Адрес
NSError
указатель, где ошибочный объект должен храниться на ошибку.Возвращаемое значение
Возвраты
YES
true
если сообщение успешно ставилось в очередь для поставки, илиNO
false
если произошла ошибка.Обсуждение
Этот метод является асинхронным (неблокирование).
На устройстве получателя, вызовы объектов сеанса его объект делегата
session:didReceiveData:fromPeer:
метод с сообщением после того, как это было полностью получено.Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
sendResourceAtURL (_: withName:toPeer:withCompletionHandler:) - sendResourceAtURL:withName:toPeer:withCompletionHandler:
Отправляет содержание URL коллеге.
Объявление
Swift
func sendResourceAtURL(_
resourceURL
: NSURL!, withNameresourceName
: String!, toPeerpeerID
: MCPeerID!, withCompletionHandlercompletionHandler
: ((NSError!) -> Void)!) -> NSProgress!Objective C
- (NSProgress *)sendResourceAtURL:(NSURL *)
resourceURL
withName:(NSString *)resourceName
toPeer:(MCPeerID *)peerID
withCompletionHandler:(void (^)(NSError *error))completionHandler
Параметры
resourceURL
Файл или HTTP URL.
resourceName
Имя для ресурса.
peerID
Коллега, которая должна получить этот ресурс.
completionHandler
Блок, который вызывают, когда поставка успешно выполняется или перестала работать. На успех обработчик вызывают с ошибочным значением
nil
. На отказ дескриптор вызывают с ошибочным объектом, указывающим то, что пошло не так, как надо.Возвращаемое значение
Возвраты
NSProgress
объект, который может использоваться, чтобы запросить состояние передачи или отменить передачу.Обсуждение
Этот метод является асинхронным (неблокирование).
На локальном устройстве вызывают блок обработчика завершения, когда поставка успешно выполняется или когда происходит ошибка.
На устройстве получателя сеанс вызывает своего делегата
session:didStartReceivingResourceWithName:fromPeer:withProgress:
метод, как только это начинает получать ресурс. Этот метод обеспечиваетNSProgress
возразите, что Ваше приложение может использовать, чтобы отменить передачу или проверить ее состояние.По успешной поставке, на устройстве получателя, сеанс вызывает своего делегата
session:didFinishReceivingResourceWithName:fromPeer:atURL:withError:
метод. Полученный ресурс записан в файл во временном расположении с тем же базовым именем; приложение ответственно за открытие файла или перемещение его к постоянному расположению перед тем методом делегата возвраты.Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Открывает поток байтов для соседней коллеги.
Объявление
Swift
func startStreamWithName(_
streamName
: String!, toPeerpeerID
: MCPeerID!, errorerror
: NSErrorPointer) -> NSOutputStream!Objective C
- (NSOutputStream *)startStreamWithName:(NSString *)
streamName
toPeer:(MCPeerID *)peerID
error:(NSError **)error
Параметры
streamName
Имя для потока. Это имя предоставлено для соседней коллеги.
peerID
ID соседней коллеги.
error
Адрес
NSError
указатель, где ошибочный объект должен храниться, если что-то идет не так, как надо.Возвращаемое значение
Возвращает объект потока вывода на успех или
nil
если не мог бы быть установлен поток.Обсуждение
Этот метод неблокирует.
Для получения дополнительной информации о выполнении сетей с потоками ввода и вывода, считайте Сетевые Темы Программирования.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Разъединяет локальный узел от сеанса.
Объявление
Swift
func disconnect()
Objective C
- (void)disconnect
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
Указывает, должна ли быть гарантирована поставка данных.
Объявление
Swift
enum MCSessionSendDataMode : Int { case Reliable case Unreliable }
Objective C
typedef NS_ENUM (NSInteger, MCSessionSendDataMode ) { MCSessionSendDataReliable, MCSessionSendDataUnreliable };
Константы
-
Reliable
MCSessionSendDataReliable
Платформа должна гарантировать поставку каждого сообщения, постановку в очередь и данные ретранслирования по мере необходимости и обеспечение чтобы поставка.
Этот тип сообщения должен использоваться для критических данных приложения.
Доступный в iOS 7.0 и позже.
-
Unreliable
MCSessionSendDataUnreliable
Сообщения коллегам должны быть сразу отправлены без организации очередей уровня сокета. Если сообщение не может быть сразу отправлено, оно должно быть отброшено. Порядок сообщений не гарантируется.
Этот тип сообщения должен использоваться для данных, прекращающих быть релевантными, если задержано, такими как играющие данные в реальном времени.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
-
Указывает текущее состояние данной коллеги в сеансе.
Объявление
Swift
enum MCSessionState : Int { case NotConnected case Connecting case Connected }
Objective C
typedef NS_ENUM (NSInteger, MCSessionState ) { MCSessionStateNotConnected, MCSessionStateConnecting, MCSessionStateConnected };
Константы
-
NotConnected
MCSessionStateNotConnected
Коллега не (или больше не) в этом сеансе.
Доступный в iOS 7.0 и позже.
-
Connecting
MCSessionStateConnecting
Соединение с коллегой в настоящее время устанавливается.
Доступный в iOS 7.0 и позже.
-
Connected
MCSessionStateConnected
Коллега подключена к этому сеансу.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
-
Указывает, должен ли сеанс использовать шифрование при передаче с соседними коллегами.
Объявление
Swift
enum MCEncryptionPreference : Int { case Optional case Required case None }
Objective C
typedef NS_ENUM (NSInteger, MCEncryptionPreference ) { MCEncryptionOptional = 0, MCEncryptionRequired = 1, MCEncryptionNone = 2, };
Константы
-
Optional
MCEncryptionOptional
Сеанс предпочитает использовать шифрование, но примет незашифрованные соединения.
Доступный в iOS 7.0 и позже.
-
Required
MCEncryptionRequired
Сеанс требует шифрования.
Доступный в iOS 7.0 и позже.
-
None
MCEncryptionNone
Сеанс не должен быть зашифрован.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
-
Коды ошибки, найденные в
MCErrorDomain
ошибочный доменNSError
объекты, возвращенные методами в Мультиравноправной платформе Связи.Объявление
Swift
enum MCErrorCode : Int { case Unknown case NotConnected case InvalidParameter case Unsupported case TimedOut case Cancelled case Unavailable }
Objective C
enum MCErrorCode { MCErrorUnknown = 0, MCErrorNotConnected = 1, MCErrorInvalidParameter = 2, MCErrorUnsupported = 3, MCErrorTimedOut = 4, MCErrorCancelled = 5, MCErrorUnavailable = 6, }; typedef NSInteger MCErrorCode;
Константы
-
Unknown
MCErrorUnknown
Произошла неизвестная ошибка.
Доступный в iOS 7.0 и позже.
-
NotConnected
MCErrorNotConnected
Ваше приложение попыталось отправить данные не соединяющейся коллеге.
Доступный в iOS 7.0 и позже.
-
InvalidParameter
MCErrorInvalidParameter
Ваше приложение передало недопустимое значение в качестве параметра.
Доступный в iOS 7.0 и позже.
-
Unsupported
MCErrorUnsupported
Работа не поддерживается. Например, если Вы вызываете, эта ошибка возвращается
sendResourceAtURL:withName:toPeer:withCompletionHandler:
с URL, который не является ни локальным файлом, ни веб-URL.Доступный в iOS 7.0 и позже.
-
TimedOut
MCErrorTimedOut
Попытка подключения испытала таймаут.
Доступный в iOS 7.0 и позже.
-
Cancelled
MCErrorCancelled
Работа была отменена пользователем.
Доступный в iOS 7.0 и позже.
-
Unavailable
MCErrorUnavailable
Мультиравноправная связь в настоящее время недоступна.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import MultipeerConnectivity;
Swift
import MultipeerConnectivity
Доступность
Доступный в iOS 7.0 и позже.
-
-
Ошибочный домен для ошибок, определенных для Мультивзаимодействования со Связью.
Константы
-
Константы, определяющие минимальное и максимальное количество коллег, поддерживаемых в сеансе.
Объявление
Objective C
NSUInteger const kMCSessionMaximumNumberOfPeers; NSUInteger const kMCSessionMinimumNumberOfPeers;
Константы