2010-01-18 2 views
5

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

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

Также мне интересно, какой тип соединения происходит между всеми этими устройствами. Поскольку теоретически GameKit поддерживает оба, BlueTooth и WiFi. Теперь проблема в том, что GKPeerPickerController можно выбрать между BlueTooth и WiFi, (к сожалению, реализация WiFi нигде не задокументирована.) Это хорошо, но как насчет пользовательского сценария, когда один реализует свои собственные GKSession10 и GKSessionDelegate Combo. Когда один создает 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 метод по умолчанию коммуникации WiFi только, или он поддерживает WiFi и bluetooth как в то же самое время (хотя я никогда не получил ни одного указания, что BlueTooth соединение происходило).

Но GameKit Предполагается, что в основном около BlueTooth В порядке? Кто-нибудь может рассказать о том, что именно происходит?

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

Update:

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

+0

Hi Pritam, то есть нет способа установить, с каким путем (Bluetooth или Wi-Fi) общаться, правильно? – ZYiOS

+0

@ Дио, да, по крайней мере так было, когда я закодировал эту пьесу, но с тех пор прошло много времени, и я не справился с GameKit. –

ответ

1

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

Я подозреваю, что режим INTERNET предназначен для подключения к удаленным серверам с использованием TCP/IP. С уважением

Смежные вопросы