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
.
Hola Pritam, es decir, no hay forma de establecer de qué manera (bluetooth o wifi) para comunicarse, ¿verdad? – ZYiOS
@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. –