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!(peermyPeerID: 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!(peermyPeerID: MCPeerID!, securityIdentityidentity: [AnyObject]!, encryptionPreferenceencryptionPreference: MCEncryptionPreference)Objective C
- (instancetype)initWithPeer:(MCPeerID *)myPeerIDsecurityIdentity:(NSArray *)identityencryptionPreference:(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Параметры
peerIDID соседней коллеги.
Обсуждение
Этот метод используется для отмены соединений с коллегами при использовании собственного кода открытия службы. Это нужно вызвать в двух ситуациях:
Если Ваше приложение вызывает
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 *)datatoPeers:(NSArray *)peerIDswithMode:(MCSessionSendDataMode)modeerror:(NSError **)errorПараметры
dataОбъект, содержащий сообщение для отправки.
peerIDsМассив коллеги объекты ID, представляющие коллеги, которые должны получить сообщение.
modeРежим передачи для использования (надежная или ненадежная поставка).
errorАдрес
NSErrorуказатель, где ошибочный объект должен храниться на ошибку.Возвращаемое значение
Возвраты
YEStrueесли сообщение успешно ставилось в очередь для поставки, илиNOfalseесли произошла ошибка.Обсуждение
Этот метод является асинхронным (неблокирование).
На устройстве получателя, вызовы объектов сеанса его объект делегата
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 *)resourceURLwithName:(NSString *)resourceNametoPeer:(MCPeerID *)peerIDwithCompletionHandler:(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 *)streamNametoPeer:(MCPeerID *)peerIDerror:(NSError **)errorПараметры
streamNameИмя для потока. Это имя предоставлено для соседней коллеги.
peerIDID соседней коллеги.
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 };Константы
-
ReliableMCSessionSendDataReliableПлатформа должна гарантировать поставку каждого сообщения, постановку в очередь и данные ретранслирования по мере необходимости и обеспечение чтобы поставка.
Этот тип сообщения должен использоваться для критических данных приложения.
Доступный в iOS 7.0 и позже.
-
UnreliableMCSessionSendDataUnreliableСообщения коллегам должны быть сразу отправлены без организации очередей уровня сокета. Если сообщение не может быть сразу отправлено, оно должно быть отброшено. Порядок сообщений не гарантируется.
Этот тип сообщения должен использоваться для данных, прекращающих быть релевантными, если задержано, такими как играющие данные в реальном времени.
Доступный в 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 };Константы
-
NotConnectedMCSessionStateNotConnectedКоллега не (или больше не) в этом сеансе.
Доступный в iOS 7.0 и позже.
-
ConnectingMCSessionStateConnectingСоединение с коллегой в настоящее время устанавливается.
Доступный в iOS 7.0 и позже.
-
ConnectedMCSessionStateConnectedКоллега подключена к этому сеансу.
Доступный в 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, };Константы
-
OptionalMCEncryptionOptionalСеанс предпочитает использовать шифрование, но примет незашифрованные соединения.
Доступный в iOS 7.0 и позже.
-
RequiredMCEncryptionRequiredСеанс требует шифрования.
Доступный в iOS 7.0 и позже.
-
NoneMCEncryptionNoneСеанс не должен быть зашифрован.
Доступный в 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;Константы
-
UnknownMCErrorUnknownПроизошла неизвестная ошибка.
Доступный в iOS 7.0 и позже.
-
NotConnectedMCErrorNotConnectedВаше приложение попыталось отправить данные не соединяющейся коллеге.
Доступный в iOS 7.0 и позже.
-
InvalidParameterMCErrorInvalidParameterВаше приложение передало недопустимое значение в качестве параметра.
Доступный в iOS 7.0 и позже.
-
UnsupportedMCErrorUnsupportedРабота не поддерживается. Например, если Вы вызываете, эта ошибка возвращается
sendResourceAtURL:withName:toPeer:withCompletionHandler:с URL, который не является ни локальным файлом, ни веб-URL.Доступный в iOS 7.0 и позже.
-
TimedOutMCErrorTimedOutПопытка подключения испытала таймаут.
Доступный в iOS 7.0 и позже.
-
CancelledMCErrorCancelledРабота была отменена пользователем.
Доступный в iOS 7.0 и позже.
-
UnavailableMCErrorUnavailableМультиравноправная связь в настоящее время недоступна.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import MultipeerConnectivity;Swift
import MultipeerConnectivityДоступность
Доступный в iOS 7.0 и позже.
-
-
Ошибочный домен для ошибок, определенных для Мультивзаимодействования со Связью.
Константы
-
Константы, определяющие минимальное и максимальное количество коллег, поддерживаемых в сеансе.
Объявление
Objective C
NSUInteger const kMCSessionMaximumNumberOfPeers; NSUInteger const kMCSessionMinimumNumberOfPeers;Константы
