2010-01-18 11 views
5

Estoy implementando un BlueTooth y Wifi programa de chat basado en iPhone. Para fines de conexión, estoy usando GameKit. Pero debido a alguna aplicación de requisitos especiales, no puedo usar el predeterminado GKPeerPickerController. Entonces, en su lugar, creé un combo GKSession y GKSessionDelegate para detectar a los pares. Después de que se encuentren, pueden chatear.GameKit: ¿Cuál es el tipo de conexión al usar GKSession sin GKPeerPickerController: Resuelto

Ahora me han puesto a prueba la funcionalidad de chat en tres mac-minis usando simulator, un simulador y una iPod, uno iPhone y uno Simulator. Puedo chatear en todos los escenarios anteriores. Pero de alguna forma, el iPhone y el iPod no se detectarán entre sí.

También tengo curiosidad acerca del tipo de conexión que está teniendo lugar entre todos estos dispositivos. Porque teóricamente GameKit es compatible con ambos, BlueTooth y WiFi. Ahora el problema es que GKPeerPickerController vamos a elegir específicamente entre BlueTooth y WiFi, (desafortunadamente la implementación de WiFi no está documentada en ninguna parte). Esto está bien, pero ¿qué pasa con el escenario personalizado cuando uno implementa su propio GKSession y GKSessionDelegate Combo. Cuando uno crea GKSession objeto usando el único método init disponibles:

– initWithSessionID:displayName:sessionMode: 

única opción de configuración que esto proporciona es sessionMode pero tiene sólo tres opciones

GKSessionModeServer, 
    GKSessionModeClient, 
    GKSessionModePeer, 

Ninguno de lo que indica la elección conexión entre Bluetooth y WiFi.

Pero tengo discapacitados bluetooth en el iPod y lo ha probado con un mac-mini funciona así que supongo que esto es usar WiFi. También en el registro consigo siguiente línea:

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

La parte DNSServiceRegister y udp me hace que la comunicación está ocurriendo sobre TCP/IP.

Entonces esto significa que cuando comienzo con GKSession y GKSessionDelegate el método por defecto de comunicación es sólo WiFi, o tampoco apoya WiFi y bluetooth ambas cosas al mismo tiempo (aunque nunca tuve un solo indicio de que BlueTooth conexión estaba ocurriendo)

Pero se supone que GameKit es sobre todo BlueTooth ¿verdad? ¿Alguien puede aclarar la situación sobre qué está pasando exactamente?

¿También ha visto algún código de muestra donde alguien haya implementado la interfaz WiFi para GKPeerPickerController?

Actualización:

OK encontrado yo mismo. GKSession y GKSessionDelegate implementaciones personalizadas como he mencionado en la pregunta funciona tanto para bluetooth como para WiFi.En realidad, el iPhone (JailBroked) que estoy usando tenía algunos problemas con BlueTooth y posiblemente eso impedía que Gamekit funcionara correctamente, después de reiniciar el teléfono y desactivar el modo Airplane, bluetooth un par de veces obtuve el bluetooth trabajando en el teléfono. Ahora la aplicación funciona bien en los modos WiFi y BlueTooth.

+0

Hola Pritam, es decir, no hay forma de establecer de qué manera (bluetooth o wifi) para comunicarse, ¿verdad? – ZYiOS

+0

@Dio sí, al menos así fue como codifiqué esa pieza, pero ha pasado mucho tiempo desde entonces y no me he mantenido al día con GameKit. –

Respuesta

1

¿Sabe si GKPeerPicker se comporta de manera similar? Me refiero a si la selección de modo NEAR le permite conectarse a través de wifi/bluetooth?

Sospecho que el modo INTERNET es para conectarse a servidores remotos utilizando TCP/IP. Saludos

Cuestiones relacionadas