Как отличить хост от клиента в iPhone bluetooth с GameKit


Я сделал многопользовательскую игру, используя фреймворк GameKit, где 2 iPhone / iPod могут подключаться друг к другу через bluetooth и играть.

Я думаю о том, как выбрать, какое устройство сможет играть первым. Таким образом, логическое решение состоит в том, чтобы выбрать хост соединения. Есть ли вообще сервер и клиент в GKSession? Неужели все они ровесники? Каким путем я должен идти, чтобы достичь того, что мне нужно?

1 2

1 ответ:

В основном, это зависит от вас, чтобы настроить сеанс, как вам нравится.

Из документации Apple:

Сеансы обнаруживают других сверстников на сеть, основанная на режиме сеанса, который устанавливается, когда сеанс инициализированный. Ваше приложение может настройте сеанс как сервер, который рекламирует тип услуги на сеть; клиент, который ищет рекламные серверы; или одноранговый сервер, который рекламирует как сервер и ищет как клиент одновременно.

Копия вашего заявления, действующего в качестве сервер инициализирует сеанс с помощью зовущий initWithSessionID: displayName:sessionMode: с режимом сеанса либо GKSessionModeServer или GKSessionModePeer. После приложение настраивает сеанс, оно рекламирует услугу, установив свойство сессии isAvailable для YES.

Копия вашего заявления, действующего в качестве клиент инициализирует сеанс с помощью зовущий initWithSessionID: displayName:sessionMode: с режимом сеанса либо GKSessionModeClient или GKSessionModePeer. После настройки сеанс, поиск вашего приложения сеть для рекламных серверов по настройка доступна сеанса собственность-да. Если сеанс является настроено с помощью GKSessionModePeer режим сеанса он также рекламирует себя как сервер, как описано выше.

Поэтому, если вы используете GKSessionModePeer для инициализации сеанса, вы есть одноранговые узлы (действующие как сервер, так и клиент). Если вы хотите отличить сервер от его клиентов, инициализируйте его с помощью GKSessionModeServer.

С уважением.