Хобрук: Ваш путь к мастерству в программировании

iOS 7: подключение устройств с использованием многорангового подключения через Wi-Fi или одноранговую сеть Wi-Fi.

Я пытаюсь подключить 2 устройства iOS 7 через структуру многорангового подключения в iOS 7. Я могу подключить их с помощью Bluetooth. В коде я не упомянул ничего похожего на блютуз.

Документация по Multipeer

Платформа многорангового подключения обеспечивает поддержку обнаружения служб, предоставляемых близлежащими устройствами iOS, с использованием инфраструктурных сетей Wi-Fi, одноранговых сетей Wi-Fi и персональных сетей Bluetooth, а затем связывается с этими службами путем отправки данных на основе сообщений, потоковой передачи данных. и ресурсы (например, файлы).

Если я отключу Bluetooth для одного из устройств, он перестанет работать.

Поскольку радиус действия Bluetooth очень медленный, мне нужно охватить большую площадь. Итак, подскажите, как подключить два устройства через Wi-Fi или одноранговый wi-fi?

Код: файл .h

@interface SessionManager : NSObject <MCSessionDelegate, MCAdvertiserAssistantDelegate, MCBrowserViewControllerDelegate>

// current peer
@property (nonatomic, readonly) MCPeerID *myPeer ;

// current session
@property (nonatomic, readonly) MCSession *session;

// current advertise
@property (nonatomic, readonly) MCAdvertiserAssistant *advertiser ;

// current browser
@property (nonatomic, readonly) MCBrowserViewController *browser ;

//To start advertising current device
- (void)start;

//To stop advertising current device
- (void)stop;

@end

.м файл:

- (id)init
{
    self = [super init];

    if (self)
    {
        _myPeer = [[MCPeerID alloc] initWithDisplayName:[[UIDevice currentDevice] name]];

        _session = [[MCSession alloc] initWithPeer:_myPeer securityIdentity:nil encryptionPreference:MCEncryptionNone];
        _session.delegate = self;

        _advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"Connect" discoveryInfo:nil session:_session];
        _advertiser.delegate = self;

        _browser = [[MCBrowserViewController alloc] initWithServiceType:@"Connect" session:_session];
        _browser.delegate = self;
    }

    return self;
}

 - (void)start
 {
    [_advertiser start];
 }

Любая помощь приветствуется.


Ответы:


1

MultipeerConnectivity обеспечивает абстракцию от инфраструктуры Wi-Fi, P2P и Bluetooth. Это означает, что ваши устройства будут взаимодействовать друг с другом, как бы они ни были способны.

Если вы можете подключить два устройства через Bluetooth, то они также могут быть подключены через инфраструктуру Wi-Fi, если они находятся в одной локальной сети без каких-либо ограничений (поэтому, если вы работаете в крупной корпорации, у вас могут возникнуть проблемы с этим из-за ИТ).

MPC позволяет вам взаимодействовать с несколькими устройствами, подключенными через совершенно разные транспорты. Таким образом, если A, B и C — это все устройства, которые могут быть обнаружены и подключены с использованием указанного вами UUID, A имеет только bluetooth, B имеет Bluetooth и Wi-Fi, а C имеет только Wi-Fi, тогда A автоматически сможет получать сообщения от C, потому что B отвечает за завершение кольца.

Все эти функции уже предоставляются MultipeerConnectivity.

Пошаговое руководство о том, как правильно обнаруживать одноранговые узлы, подключаться к ним и общаться с ними, см. в видеоролике wwdc «Сети поблизости с многоранговым подключением» здесь

27.01.2014
  • Я уже смотрел это видео и реализовал код, используя только его... но я хочу подключать устройства с помощью Wi-Fi, чтобы иметь хороший диапазон подключения. 27.01.2014
  • Если вы смотрели это видео, то вы уже можете подключиться через Wi-Fi, просто убедитесь, что устройства находятся в одной локальной сети и на обоих включен Wi-Fi. Вы можете отключить Bluetooth, чтобы быть уверенным. Чтобы было ясно, насколько я понимаю, нет возможности указать подключение через Bluetooth или WiFi, оно просто подключается так, как ему нравится. 27.01.2014

  • 2

    Проверенный ответ неверен, потому что фреймворк не работает по локальной сети, а находится на уровне ниже, получая прямой доступ к Bluetooth или WI-FI. Другими словами, вам не нужно находиться в одной сети с одним и тем же SSID, только чтобы был включен WI-FI. Держите оба устройства отключенными от локальной сети, например, выключите маршрутизатор и Bluetooth, и вы заметите, что они все еще могут подключаться. Тем не менее, это отчасти правильно в том смысле, что вы не можете детализировать, чтобы сказать платформе напрямую использовать Bluetooth или WI-FI, поскольку Apple решила автоматизировать эту часть для нас.

    25.07.2016
    Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..