Desarrollo de iOS: al recibir una invitación de Game Center, ¿cómo obtengo el objeto GKMatch?

Estoy construyendo un juego para iPhone que usa Game Center y me cuesta entender cómo iniciar un juego que se inició al recibir una invitación para jugar de un amigo. La documentos di esto...

El parámetro acceptInvite no es nulo cuando la aplicación recibe una invitación directamente de otro jugador. En esta situación, la aplicación del otro jugador ya ha creado la solicitud de partido, por lo que esta copia de su aplicación no necesita crear una.

De acuerdo con esto, no necesito crear una solicitud de coincidencia ya que el jugador que hizo la invitación ya creó una. Si es así, ¿cómo obtengo el objeto GKMatch necesario para enviar / recibir datos hacia / desde el otro jugador? La única forma que conozco de obtener el objeto GKMatch es crear una solicitud de coincidencia y llamar al findMatchForRequest método, que los docs dicen que no debería hacer.

El único ejemplo de código que tienen para esto implica la creación y el uso de GKMatchmakerViewController, que no puedo usar porque estoy creando mis propias vistas personalizadas.

¡Muchas gracias por tu sabiduría!

preguntado el 09 de enero de 11 a las 06:01

3 Respuestas

Recibí una respuesta de uno de los ingenieros de Apple sobre esto, esto es lo que dijo ...

Puede realizar coincidencias automáticas con vistas personalizadas, pero no hay forma de usar invitaciones sin usar GKMatchmakerViewController. Por lo tanto, debe seguir el ejemplo de código.

Supongo que tendrá que haber una ruptura radical en la consistencia de mi interfaz de usuario.

Respondido el 09 de enero de 11 a las 22:01

¿Alguna vez logró que las invitaciones funcionaran, INCLUSO CON GKMatchMakerViewController? Hay un montón de publicaciones en los foros de desarrollo de iPhone quejándose de que las invitaciones no funcionan como deberían. - Joseph Tura

Carcassonne de alguna manera usa una vista personalizada que admite el uso de invitaciones de GameCenter. Sin embargo, hasta ahora no he podido averiguar cómo, y estaba a punto de publicar mi propia pregunta cuando encontré esta. Así que creo que hay más en la historia aquí de lo que Apple dejó entrever, pero desafortunadamente no puedo completar la parte que falta. - Kris Giesing

¡Tan frustrante que esto parece no tener apoyo! - livingtech

Por cierto, ¿sabe a qué muestra de código se refería el ingeniero? - livingtech

Tengo una solución al problema de las invitaciones al centro de juegos. Así que sigue estos pasos: -
1- verifique que sus notificaciones push estén activadas en la configuración y las invitaciones de amigos estén activadas en la configuración de su cuenta de Game Center.
2-ahora instala la última versión del juego fruit ninja
3-abra el centro de juegos e inicie sesión, luego póngalo en segundo plano.
4-open fruit ninja directamente ir a nuevo juego => multijugador => centro de juego
5-ahora verá dos opciones (invitar a un amigo y jugar ahora en la esquina superior derecha)
Presiona el botón Jugar ahora, para que el centro de juegos encuentre el juego que no has invitado.
7-cuando comienza el juego y puedes ver el nombre de tu amigo no invitado en la esquina superior derecha. Una vez que finalice el juego, ve directamente al centro de juegos en segundo plano y en la sección de juegos y entra en Fruit Ninja en la lista de juegos. Aquí verá la opción reproducida recientemente, Tóquela. Aquí verá en la parte superior de la lista el nombre de un jugador (con quién jugó), toque el nombre y envíele una solicitud de amistad inmediatamente.
8-si acepta la solicitud, ve a amigos => (tu amigo recientemente agregado) => jugamos juntos (fruit ninja) => presiona play (arriba a la derecha)
9-ahora el juego se abrirá y verás la página de GC. Presiona el botón de invitación y elige al amigo agregado recientemente, y luego envía, esperándolo y listo para jugar.

Ahora su id de gc se ha verificado y puede invitar a cualquiera de sus amigos y puede jugar cualquier juego (que admite la función de invitación)

Respondido 12 Jul 11, 02:07

Esto no está relacionado con la pregunta del OP. - livingtech

A pesar de lo que dijo el ingeniero de Apple, ¿qué tal si prueba algo como esto para invitar sin usar una vista personalizada?

[[GKLocalPlayer localPlayer] loadFriendsWithCompletionHandler:^(NSArray *friends, NSError *error) {



[GKPlayer loadPlayersForIdentifiers:friends withCompletionHandler:^(NSArray *players, NSError *error) {
    for (GKPlayer *player in players) {
        NSLog(@"%@",player.alias); //here I'm just logging the aliases but the array players can be used in any way
    }
}];

}];

Ahora, si un usuario selecciona jugadores de esta lista en una vista personalizada, GKMatchRequest tiene una propiedad llamada playersToInvite y podemos configurar estos reproductores para esa propiedad. Y cree una coincidencia mediante programación utilizando esta solicitud.

Esto parece muy posible, pero no lo he intentado para ser honesto.

contestado el 17 de mayo de 12 a las 01:05

Esta publicación trata sobre recibir una invitación, no enviar una. - livingtech

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.