2010-06-10 5 views
2

У меня есть несколько устройств, подключенных через Wi-Fi, используя GameKit. У меня есть простой UIAlertView popping, когда сверстники (клиенты) получают данные. Все, кроме отправителя (сервера), показывают это предупреждение, когда данные отправляются, поэтому мне интересно, является ли это ошибкой в ​​моем приложении или если это ожидаемое поведение. Если устройство, выполняющее отправку, также является GKSessionModePeer, я ожидаю, что оно «запустит» его сообщение receiveData:, так как я отправляю всеpeers.GKSession sendDataToAllPeers, включая отправителя?

Должен ли я вручную вызвать метод на устройстве-отправителе? Например, если бы я хотел отправить пакет «GameStart» на 4 телефона, одноранговые вызовы вызывали бы startGame: в методе receiveData:fromPeer:inSession:context:, когда он получает этот пакет, а отправитель будет звонить sendDataToAllPeers: и вызывать startGame:.

Правильно ли это или есть способ включить отправителя в список sendDataToAllPeers:, чтобы он отвечал точно так же, как и все подключенные одноранговые узлы?

ответ

2

Я предполагаю, что вы имеете в виду отправителя, т.е. тот, кто отправляет данные. (Sendee = предполагаемый получатель, который в вашем случае - все).

Ожидаемое поведение. «Все сверстники» не включают отправителя, и вы не можете включить отправителя в список sendDataToAllPeers:. Ваш план вызова метода вручную на устройстве-отправителе одновременно с отправкой сообщения сверстникам звучит как лучший способ.

Если вы хотите убедиться, что данные были удалены ОК, прежде чем что-то сделать с отправителем, вы можете отправить подтверждение от сверстников.

+0

Но что, если подтверждение не поступит? – openfrog