Algunos startBrowsingForNearbyPlayersWithReachableHandler preguntas

Estoy tratando de hacer funcionar el emparejamiento local en GameKit usando[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:]. Básicamente, estoy tratando de implementar coincidencias locales sin interfaz: siempre que haya un jugador en mi vecindario local, quiero conectarme y comenzar una coincidencia. Es importante que yosolamente quiero hacer esto para los jugadores locales: yoNunca quiere coincidir automáticamente a través de internet.

He habilitado Game Center para mi aplicación en iTunes connect y me he registrado en una cuenta de sandbox diferente en cada dispositivo que estoy usando para probar.

He intentado tanto emparejamiento conGKMatchmakerViewController (después de autenticar al jugador local) y el emparejamiento programático constartBrowsingForNearbyPlayersWithReachableHandler:, ejecutando el mismo código en un iPhone 4 y un iPod Touch de cuarta generación sentados uno junto al otro en mi escritorio. Ninguno de los dos encuentra al otro; cuando usasGKMatchmakerViewController La interfaz para encontrar jugadores cercanos permanece en el

Buscando jugadores ...

spinner, y cuando se usastartBrowsingForNearbyPlayersWithReachableHandler:, el bloque de notificación nunca es llamado.

Aquí está mi bloque actual de código de prueba:

-(void)connectLocal
{
    if( ![GKLocalPlayer localPlayer].isAuthenticated )
    {
        // authenticateLocalPlayer calls connectLocal again after authentication is complete
        [ self authenticateLocalPlayer ];
        return;
    }
    [[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:^(NSString *playerID, BOOL reachable) {
             NSLog(@"Reachability changed for player %@", playerID );
        } ];
}

Los documentos son un poco escasos y confusos sobre el tema, especialmente cuando se trata de la diferencia entre el mulitplayer local y los partidos a través de Internet. Por ejemplo, parece ser necesario autenticar al jugador local y crear un partido antes de encontrar jugadores para unirse a ese partido (Creación de cualquier tipo de inicio de coincidencia con una solicitud de coincidencia). sin embargoesta pequeña pepita parece sugerir lo contrario:

La interfaz de usuario estándar permite a los jugadores descubrir otros jugadores cercanos, incluso cuando ninguno de los jugadores está actualmente conectado a Game Center directamente.

Adicionalmente, en el flujo descrito enBuscando jugadores cercanos, una solicitud de coincidencia no se crea hasta el paso 3,después encontrar jugadores a través del bloque de notificación pasado astartBrowsingForNearbyPlayersWithReachableHandler:. Desafortunadamente, nunca he llegado tan lejos.

Entonces, las preguntas:

1) ¿Tengo razón al pensar que puedo llamar?startBrowsingForNearbyPlayersWithReachableHandler: ¿Antes de autenticar al jugador local? GameKit no arroja un error, así que supongo que está bien. Esto puede ser una suposición precipitada. Si me autentico o no, no parece hacer mucha diferencia.

2) ¿Alguien ha implementado con éxito la auto-coincidencia local usando[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:? ¿Hay un buen código de ejemplo en cualquier lugar que ilustre el flujo completo, desde la búsqueda de jugadores hasta el inicio de una partida, todo mediante programación?

3) Parece que hay informes contradictorios en la web sobre si las aplicaciones habilitadas para GameKit se pueden probar en el simulador de iOS. El consenso general parece que no, y es mejor probar en el hardware de iOS. He estado usando un iPhone 4 y un iPod Touch de cuarta generación. Para aquellos que han probado exitosamente el multijugador local, ¿qué configuración y metodología de prueba usó?

Respuestas a la pregunta(3)

Su respuesta a la pregunta