Estoy tratando de utilizar el centro de juego: multijugadorGame Center: delegado partido no se le llama después de encontrar un donante compatible
Hasta ahora, los jugadores se van a autenticar al centro de juego, pueden enviar/leer partituras, y acheivements. Para funciones de varios jugadores, probé ambos métodos: - usando la interfaz del centro de juegos para encontrar una coincidencia. - Encuentre una coincidencia mediante programación.
Para ambos sentidos, tengo el siguiente problema: el partido del delegado del partido: player: didChangeState: method no se llama. En Apple Docs, se indica que se llama a este delegado si un jugador está conectado o desconectado.
En mi caso, nunca se llama a este delegado. Creo que me falta un paso. aquí después de la implementación de mi delegado (como se especifica en Apple Doc).
- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
{
switch (state)
{
case GKPlayerStateConnected:
// handle a new player connection.
break;
case GKPlayerStateDisconnected:
// a player just disconnected.
break;
}
if (!self.matchStarted && match.expectedPlayerCount == 0)
{
self.matchStarted = YES;
// handle initial match negotiation.
}
}
y también el código para encontrar una coincidencia.
-(void) findProgrammaticMatch
{
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request
withCompletionHandler:^(GKMatch *FoundMatch, NSError *error)
{
if (error)
{
// Process the error.
StatusLabel.text = @"Match Not Found";
}
else if (FoundMatch != nil)
{
MultiPlayerMatch = FoundMatch; // Use a retaining property to retain the match.
StatusLabel.text = @"Match Found";
MultiPlayerMatch.delegate = self; // start!
// Start the match.
// Start the game using the match.
[self StartMatch];
}
}];
}
Gracias por su ayuda.
No creo que esto sea cierto. Acabo de probar con la coincidencia automática y didChangeState nunca se dispara. Solo didFindMatch. Creo que didChangeState solo puede suceder si un jugador ingresa a GKPlayerStateUnknown y luego regresa, o si se agregan a una partida en progreso. –