GameKit: Какой тип подключения используется GKSession без GKPeerPickerController? - PullRequest
5 голосов
/ 18 января 2010

Я использую BlueTooth и Wifi программу чата для iPhone.Для подключения я использую GameKit.Но из-за некоторых особых требований приложения я не могу использовать значение по умолчанию GKPeerPickerController.Поэтому я вместо этого создал комбо GKSession и GKSessionDelegate для обнаружения пиров.После того, как они найдут друг друга, они смогут общаться.

Теперь я проверил функциональность чата на трех mac-minis, используя simulator, один симулятор и один iPod, один iPhone и один Simulator,Я могу общаться во всех вышеперечисленных сценариях.Но кое-как iPhone и iPod не будут обнаруживать друг друга.

Также мне любопытно, какой тип связи происходит между всеми этими устройствами.Потому что теоретически GameKit поддерживает и BlueTooth, и WiFi.Теперь проблема в том, что GKPeerPickerController давайте выберем конкретно между BlueTooth и WiFi (к сожалению, реализация WiFi нигде не документирована.) Это хорошо, но как насчет пользовательского сценария, когда кто-то реализует его илиее собственные GKSession и GKSessionDelegate Комбо.Когда создается объект GKSession с использованием единственного доступного метода init:

– initWithSessionID:displayName:sessionMode:

параметр конфигурации, который обеспечивает только sessionMode, но имеет только три параметра

   GKSessionModeServer,
   GKSessionModeClient,
   GKSessionModePeer,

Нетиз которых указывает выбор соединения между Bluetooth и WiFi.

Но я отключил bluetooth на iPod и протестировал его с mac-mini, он работает, так что я предполагаю, что он использует WiFi.Также в журнале я получаю следующую строку:

DNSServiceRegister callback: Ref=4c3f3d0, Flags=2, ErrorType=0 name=00XGT0H0A..BTChat1 regtype=_0eilkgh5o2mq17._udp. domain=local.

Часть DNSServiceRegister и udp заставляет меня думать, что общение происходит в течение TCP/IP.

Значит ли это, что когда я начинаю с GKSession и GKSessionDelegate, по умолчанию используется только Wi-Fi или он поддерживает одновременно WiFi и bluetooth (хотя яне получил ни единого указания на то, что BlueTooth соединение происходило).

Но GameKit должно быть в основном примерно BlueTooth Верно?Кто-нибудь может пролить свет на ситуацию о том, что именно происходит?

Также вы видели пример кода, где кто-то реализовал интерфейс WiFi для GKPeerPickerController?


Решено:

ОК Нашел сам.Пользовательские реализации GKSession и GKSessionDelegate, как я упоминал в этом вопросе, работают как для bluetooth, так и WiFi.На самом деле у iPhone (JailBroked), который я использую, были некоторые проблемы с BlueTooth, и, возможно, это мешало Gamekit работать должным образом, после полной перезагрузки телефона и выключения режима Airplane, несколько раз включенного bluetoothbluetooth работает на телефоне.Теперь приложение работает нормально в режимах WiFi и BlueTooth.

1 Ответ

1 голос
/ 02 августа 2010

Знаете ли вы, ведет себя ли GKPeerPicker аналогичным образом? Я имею в виду, если выбор режима NEAR позволяет подключаться через Wi-Fi / Bluetooth?

Я подозреваю, что режим ИНТЕРНЕТ предназначен для подключения к удаленным серверам с использованием TCP / IP. Привет

...