2011-10-28 7 views
11

Estoy trabajando en un juego de iOS basado en turnos utilizando la nueva API iOS5 basada en turnos.¿Cómo recibo notificaciones para las partidas por turnos de GameKit?

Uno de los protocolos delegados que necesita implementar para esto es GKTurnBasedEventHandlerDelegate. Uno de los métodos para implementar es handleTurnEventForMatch. Esto es de la documentación de Apple en este método:

handleTurnEventForMatch

enviado al delegado cuando es el turno del jugador local para actuar en un partido por turnos .

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match 

Parámetros

partido - Un objeto partido que contiene el estado actual del partido.

Discusión

Cuando su delegado recibe este mensaje, el jugador ha aceptado una notificación empuje para un partido ya en curso. Su juego debería finalizar cualquier tarea que estaba realizando y cambiar a la información de coincidencia proporcionada por el objeto coincidente.

La mayor parte de mi juego está funcionando. Recibo notificaciones de movimientos recibidos a través del método anterior. También veo insignias en los íconos de la aplicación que se actualizan con éxito.

Sin embargo, no recibo ninguna otra notificación del sistema cuando entran eventos de turno; no aparece nada en el centro de notificaciones, etc. ¿Debo hacer algo fuera de GameKit para habilitar esto? ¿Necesito enviar manualmente una notificación local cuando obtengo handleTurnEventForMatch? Los documentos parecen implicar que no, ya que dice más arriba "Cuando su delegado recibe este mensaje, el jugador ha aceptado una notificación de inserción para una partida que ya está en progreso".

Así que esto parece implicar que el jugador ha hecho clic en una notificación de inserción para conseguir este método llama (pero por supuesto que no aparecen nunca, así que no tienen!)

¿Qué tengo que hacer para que empuje notificaciones en mi aplicación para eventos por turnos? ¿Debo enviar una notificación local cuando reciba el método anterior (esto parece contradecir el intento, dada la verborrea del documento anterior).

+0

Hey John, que han dado cuenta de esto todavía? Estoy a punto de implementar todo esto en un juego yo mismo. Espero que no sea tan terrible! – livingtech

+0

Por favor revise mi pregunta http://stackoverflow.com/questions/16266089/gkmatchrequest-invitation-not-showing-in-other-device, no entiendo por qué no recibo la notificación en el otro dispositivo. ¿Podría ser la issu relacionada con handleInviteFromGameCenter o GKTurnBasedEventHandlerDelegate ?? – Aitul

Respuesta

14

acabo de terminar la lucha contra mi camino a través de este, y después de una semana o menos de golpeando mi cabeza contra el escritorio descubrí estas cosas importantes:

(1) El simulador no recibe estos resultan notificaciones. Una vez que hice este trabajo, funciona bien entre dos dispositivos. Un simulador jugando contra un dispositivo enviará eventos, pero no los recibirá.Entonces, si intentas usar un dispositivo y el simulador para probarlo, buena suerte. Usa dos dispositivos

(2) Asegúrese de que tiene activado "Game Center habilitado para esta versión" en iTunes connect, y asegúrese de que CFBundleVersion en su aplicación coincida con esta versión. Tan pronto como hice esto, todo comenzó a funcionar.

Supongo que ya ha hecho: [GKTurnBasedEventHandler sharedTurnBasedEventHandler] .delegate = YOUR_DELEGATE_CLASS;

+0

me salvó el tono del tiempo. Gracias – Peacemoon

-1

¿Ha configurado notificaciones push en iTunes connect/the provisioning portal? Realmente necesitas un certificado especial para habilitar push.

Estaba teniendo el mismo problema que usted hasta que configuré los certificados.

0

Como dice la documentación, que el mensaje se recibe cuando el jugador ha aceptado la notificación de inserción (típicamente por desbloquear el teléfono oa través de centro de notificaciones). El envío de notificaciones push se decide en el lado del cliente de Game Center, y GameKit lo hace automáticamente por usted. No es necesario implementar un GKTurnBasedEventHandlerDelegate para que funcionen, solo para responder al jugador que los acepta (volviendo automáticamente a esa coincidencia o lo que sea).

supongo que vale la pena doble control de la configuración de notificaciones de su dispositivo para ver que su aplicación tiene el centro de notificaciones de alertas activadas.

1

Tom Schulz ha dicho es cierto. ¡Pero una cosa! : puedes recibir notificaciones con tu dispositivo pero no con el simulador. Para hacerlo, siempre reinicie el contenido y la configuración de su simulador antes de compilar y ejecutar. Y en el simulador puedes usar el método de carga de coincidencias para recibir algo para las pruebas. Espero que ayuda

Cuestiones relacionadas