2010-06-10 5 views
2

J'ai un certain nombre d'appareils connectés via le wifi en utilisant GameKit. J'ai un simple UIAlertView apparaître lorsque les pairs (clients) reçoivent des données. Tous sauf l'expéditeur (serveur) montrent cette vue d'alerte quand des données sont envoyées, ainsi je me demande si c'est un bogue dans mon application ou si c'est le comportement attendu. Si le périphérique faisant l'envoi est aussi un GKSessionModePeer, je m'attendrais à ce qu'il "déclenche" son message receiveData: aussi puisque je l'envoie à tousmes pairs.GKSession sendDataToAllPeers incluant l'expéditeur?

Dois-je appeler une méthode manuellement de la même manière sur le périphérique émetteur? Par exemple, si je voulais envoyer un paquet "GameStart" aux 4 téléphones, les pairs appelleraient startGame: dans la méthode receiveData:fromPeer:inSession:context: lorsqu'il recevrait ce paquet et que le destinataire appellerait sendDataToAllPeers: et appellerait startGame: sur lui-même.

Cela vous semble-t-il correct ou existe-t-il un moyen d'inclure l'expéditeur dans la liste sendDataToAllPeers: afin qu'il réponde exactement comme tous les homologues connectés?

Répondre

2

Je présume par sendee que vous voulez dire expéditeur, ie. celui qui envoie les données. (Sendee = le destinataire prévu, qui dans votre cas est tout le monde).

C'est le comportement attendu. "Tous les homologues" n'inclut pas l'expéditeur et vous ne pouvez pas inclure actuellement l'expéditeur dans la liste sendDataToAllPeers :. Votre plan d'appeler une méthode manuellement sur le périphérique de l'expéditeur en même temps que vous envoyez le message aux pairs semble être la meilleure solution.

Si vous voulez être sûr que les données se sont bien éteintes avant de faire quelque chose sur l'expéditeur, vous pouvez renvoyer un accusé de réception des pairs.

+0

Mais que se passe-t-il si l'accusé de réception n'arrive pas? – openfrog

Questions connexes