GKSession sendDataToAllPeers, включая отправителя?

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

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

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


person typeoneerror    schedule 10.06.2010    source источник


Ответы (1)


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

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

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

person DenverCoder9    schedule 13.06.2010
comment
Но что делать, если подтверждение не приходит? - person openfrog; 21.11.2012